Если servlet_alias_name
определено как url-mapping
в дескрипторе развертывания (/WEB-INF/web.xml) для вашего веб-приложения, вы сможете получить доступ к сервлету таким способом. Я предполагаю, что вы не определили сопоставление URL-адресов и пытаетесь использовать элемент servlet-name напрямую, что не будет работать.
Например, в следующем фрагменте класс сервлета com.mycompany.SuperServlet
будет сопоставлен с логическим именем myServlet
, а затем URL-адрес http://localhost:8080/ccc/servlet-alias-name
будет сопоставлен с логическим именем myServlet
. Это приведет к тому, что запросы к этому URL вызовут этот класс сервлета.
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.mycompany.myservlets.SuperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/servlet_alias_name</url-pattern>
</servlet-mapping>
Обновление - ОК, поцарапайте все это.
Ваша проблема в том, что ваше веб-приложение не может найти класс org.jfree.data.general.PieDataset
во время выполнения, хотя он был там, когда код компилировался, проверьте javadoc на наличие NoClassDefFoundError .
Включили ли вы библиотеки в развернутое веб-приложение?
- как баночка в / WEB-INF / lib
- как классы в / WEB-INF / classes
Или библиотеки libs должны быть развернуты и доступны глобально на сервере приложений?
У вас есть одинаковые версии libs в вашей среде сборки и в вашей среде выполнения?
Чтобы отладить эту ошибку, когда я видел ее на Tomcat, я перехожу к простому случаю (развернуть jar с webapp) и пытаюсь заставить это работать. Я никогда не находил каких-либо особенно полезных инструментов для отладки этой ситуации, если честно - кто-нибудь знает что-нибудь, что помогает?