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。