java.lang.ClassNotFoundException: 使用外部 jar 的小程序

java.lang.ClassNotFoundException: Applet using external jar

我正在使用 jsp 页面开发小程序代码。

    <APPLET 
      id = "app"
      codebase="<%=request.getContextPath()%>/lib/" 
      code="com.myDemo.test.RunApplet.class" 
      width=100 
      height=50 
      archive="myApp1.jar, myApp2.jar">    
   </APPLET>

我的目录结构是:

DemoProject
  -- src (some classes & packeages)
  -- build
  -- WebContent
       -- css (some css file)
       -- script (some js file)
       -- WEB-INF
            -- jsp(some jsp file)
                 -- myApplet.jsp
            -- lib
                 -- myApp1.jar
                 -- myApp2.jar

当我执行 myApplet.jsp 时,它会抛出错误

java.lang.ClassNotFoundException:com.myDemo.test.RunApplet.class

我也申请了

codebase = "."
codebase = "classes"
codebase = "classes/"

但仍然是 ClassNotFoundException。

您必须引用 中的所有 jar

像你一样:

archive="myApp1.jar, myApp2.jar"

注意您的 jar 在存档中的位置:

How to specify correctly codebase and archive in Java applet?

然后您必须检查所有依赖项,并一一包含它们:

解决方案 1(如果 jar 不是太多):尝试、检测异常(例如这个:com.myDemo.test)、包含 jar,等等。

您必须至少提供每个依赖项。

如果您的代码很短(applet 的原则),它会缩短下载时间。

解决方案 2:使用一些工具:jaranalyser,...

How to list dependencies of a JAR

解决方案 3:非常简单,但会产生很大的罐子:将所有东西都装在一个罐子里

请注意,WEB-INF 文件夹中的任何内容只能由后端 servlet 读取,不能 浏览器中的任何内容 运行 包括小程序[1].

如果lib文件夹中的两个jar仅供小程序使用,您可以将文件夹上移至webcontent层。如果您的后端也使用它们,您将不得不复制它们或创建一个 servlet 以将它们提供给前端。

[1]What is WEB-INF used for in a Java web application?