Stubborn/irrational java.lang.ClassNotFoundException 在 weblogic ADF 中,class 在 JAR 中
Stubborn/irrational java.lang.ClassNotFoundException in weblogic ADF, class in JAR
我是 ADF/JDeveloper 的新手,正在为典型的 'class not found' 苦苦挣扎 - 希望这有诀窍?
使用:JDeveloper 12c 和集成的 Web 逻辑服务器。
情况:Servlet 在 web.xml 中注册,但 class 在 JAR
中
<servlet>
<description>..</description>
<servlet-name>ABCHandlerServlet</servlet-name>
<servlet-class>com.mine.ControlServlet</servlet-class>
<init-param>
<param-name>licenseKey</param-name>
<param-value>123</param-value>
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>/servlet/GaugeServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>/mapproxy/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resources</servlet-name>
<url-pattern>/bi/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>*.ABC</url-pattern>
</servlet-mapping>
com.mine.ControlServlet,它在部署时报告找不到,在 JAR 文件中。
JAR 文件在
ViewController/Application Sources/META-INF/lib/myjar.jar
我已经三次检查 class 是否在该 JAR 中。
我也试过将该 JAR 添加到项目 class 路径中,尽管这似乎没有必要(无论如何也没有什么不同)。
FWIW JAR/Servlet 已在非 ADF 环境中多次使用,因此我怀疑问题出在 JAR 中。
您的 WAR 中可能未打包该库。将库添加到 ViewControler 库是故事的一半。您可能需要检查您的 WAR 部署配置文件是否也将库打包:
右击ViewController -> Project Properties -> Deployment -> Select右边已有的Web模块 -> Edit (icon) -> WEB-INF/lib ->贡献者 -> 确保将库作为部署的一部分进行检查。
您可以通过右键单击视图控制器 > 项目属性 -> Select Web 模块 -> 部署到 WAR 来仔细检查 WAR 内容。
从 Project Properties->Libraries and Classpath 中删除 JAR 然后读取它解决了问题。
时间,浪费了。
感谢 florinmarcus,1up。
我是 ADF/JDeveloper 的新手,正在为典型的 'class not found' 苦苦挣扎 - 希望这有诀窍?
使用:JDeveloper 12c 和集成的 Web 逻辑服务器。
情况:Servlet 在 web.xml 中注册,但 class 在 JAR
中<servlet>
<description>..</description>
<servlet-name>ABCHandlerServlet</servlet-name>
<servlet-class>com.mine.ControlServlet</servlet-class>
<init-param>
<param-name>licenseKey</param-name>
<param-value>123</param-value>
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>/servlet/GaugeServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>/mapproxy/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resources</servlet-name>
<url-pattern>/bi/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ABCHandlerServlet</servlet-name>
<url-pattern>*.ABC</url-pattern>
</servlet-mapping>
com.mine.ControlServlet,它在部署时报告找不到,在 JAR 文件中。
JAR 文件在
ViewController/Application Sources/META-INF/lib/myjar.jar
我已经三次检查 class 是否在该 JAR 中。
我也试过将该 JAR 添加到项目 class 路径中,尽管这似乎没有必要(无论如何也没有什么不同)。
FWIW JAR/Servlet 已在非 ADF 环境中多次使用,因此我怀疑问题出在 JAR 中。
您的 WAR 中可能未打包该库。将库添加到 ViewControler 库是故事的一半。您可能需要检查您的 WAR 部署配置文件是否也将库打包:
右击ViewController -> Project Properties -> Deployment -> Select右边已有的Web模块 -> Edit (icon) -> WEB-INF/lib ->贡献者 -> 确保将库作为部署的一部分进行检查。
您可以通过右键单击视图控制器 > 项目属性 -> Select Web 模块 -> 部署到 WAR 来仔细检查 WAR 内容。
从 Project Properties->Libraries and Classpath 中删除 JAR 然后读取它解决了问题。
时间,浪费了。
感谢 florinmarcus,1up。