Java jnlp log4j ClassNotFoundException

Java jnlp log4j ClassNotFoundException,java,log4j,java-web-start,classnotfoundexception,jnlp,Java,Log4j,Java Web Start,Classnotfoundexception,Jnlp,我试图用JavaWebStart部署Java应用程序,但不断出现错误。当我从Eclipse或命令行运行该应用程序时,它运行良好。我的应用程序使用我在单独的jnlp文件中定义的一些第三方库。如果您有任何想法或建议,请与我们分享。 我使用的是Tomcat7.0,在根文件夹中复制了jnlp文件,所有的lib都在根文件夹中的一个单独的lib文件夹中 这是我的主要jnlp文件-main.jnlp: java.lang.NoClassDefFoundError: org/apache/log4j/Logge

我试图用JavaWebStart部署Java应用程序,但不断出现错误。当我从Eclipse或命令行运行该应用程序时,它运行良好。我的应用程序使用我在单独的jnlp文件中定义的一些第三方库。如果您有任何想法或建议,请与我们分享。 我使用的是Tomcat7.0,在根文件夹中复制了jnlp文件,所有的lib都在根文件夹中的一个单独的lib文件夹中

这是我的主要jnlp文件-main.jnlp:

java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at org.tflander.org.apache.commons.logging.Log.<clinit>(Unknown Source)
at org.tflander.org.apache.commons.logging.LogFactory.getLog(Unknown Source)
at org.tflander.org.apache.pdfbox.pdmodel.PDDocument.<clinit>(Unknown Source)
at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:70)
at org.slt.sample.SampleFile.main(SampleFile.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
org.tflander.pdf.PdfException: Reason 11: org/apache/log4j/Logger
    at org.tflander.pdf.PdfException.A(PdfException.java:60)
    at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:90)
    at org.slt.sample.SampleFile.main(SampleFile.java:78)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at org.tflander.org.apache.commons.logging.Log.<clinit>(Unknown Source)
    at org.tflander.org.apache.commons.logging.LogFactory.getLog(Unknown Source)
    at org.tflander.org.apache.pdfbox.pdmodel.PDDocument.<clinit>(Unknown Source)
    at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:70)
    ... 10 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
Finished

样品
没有一个
C:/sample.pdf
sample.pdf
下面是other-libs.jnlp:


其他
没有一个
下面是log4j.jnlp:


日志
没有一个
以下是我在启动main.jnlp时遇到的错误:

java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at org.tflander.org.apache.commons.logging.Log.<clinit>(Unknown Source)
at org.tflander.org.apache.commons.logging.LogFactory.getLog(Unknown Source)
at org.tflander.org.apache.pdfbox.pdmodel.PDDocument.<clinit>(Unknown Source)
at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:70)
at org.slt.sample.SampleFile.main(SampleFile.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
org.tflander.pdf.PdfException: Reason 11: org/apache/log4j/Logger
    at org.tflander.pdf.PdfException.A(PdfException.java:60)
    at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:90)
    at org.slt.sample.SampleFile.main(SampleFile.java:78)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at org.tflander.org.apache.commons.logging.Log.<clinit>(Unknown Source)
    at org.tflander.org.apache.commons.logging.LogFactory.getLog(Unknown Source)
    at org.tflander.org.apache.pdfbox.pdmodel.PDDocument.<clinit>(Unknown Source)
    at org.tflander.pdf.PdfDocument.<init>(PdfDocument.java:70)
    ... 10 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
Finished
java.lang.NoClassDefFoundError:org/apache/log4j/Logger
位于org.tflander.org.apache.commons.logging.Log。(未知来源)
位于org.tflander.org.apache.commons.logging.LogFactory.getLog(未知源)
位于org.tflander.org.apache.pdfbox.pdmodel.PDDocument。(来源未知)
请访问org.tflander.pdf.PdfDocument。(PdfDocument.java:70)
位于org.slt.sample.SampleFile.main(SampleFile.java:78)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于com.sun.javaws.Launcher.executeApplication(未知源)
位于com.sun.javaws.Launcher.executeMainClass(未知源)
位于com.sun.javaws.Launcher.doLaunchApp(未知源)
位于com.sun.javaws.Launcher.run(未知源)
位于java.lang.Thread.run(未知源)
原因:java.lang.ClassNotFoundException:org.apache.log4j.Logger
位于java.net.URLClassLoader.findClass(未知源)
位于com.sun.jnlp.JNLPClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 14多
org.tflander.pdf.PdfException:原因11:org/apache/log4j/Logger
位于org.tflander.pdf.PdfException.A(PdfException.java:60)
请访问org.tflander.pdf.PdfDocument。(PdfDocument.java:90)
位于org.slt.sample.SampleFile.main(SampleFile.java:78)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于com.sun.javaws.Launcher.executeApplication(未知源)
位于com.sun.javaws.Launcher.executeMainClass(未知源)
位于com.sun.javaws.Launcher.doLaunchApp(未知源)
位于com.sun.javaws.Launcher.run(未知源)
位于java.lang.Thread.run(未知源)
原因:java.lang.NoClassDefFoundError:org/apache/log4j/Logger
位于org.tflander.org.apache.commons.logging.Log。(未知来源)
位于org.tflander.org.apache.commons.logging.LogFactory.getLog(未知源)
位于org.tflander.org.apache.pdfbox.pdmodel.PDDocument。(来源未知)
请访问org.tflander.pdf.PdfDocument。(PdfDocument.java:70)
... 10多
原因:java.lang.ClassNotFoundException:org.apache.log4j.Logger
位于java.net.URLClassLoader.findClass(未知源)
位于com.sun.jnlp.JNLPClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 14多
完成了

我想您已经检查过了,lib/log4j-1.2.17.jar确实存在吗?有正确的数字和案例敏感性吗?@Steffen Nieuwenhoven是的,我已经检查过了,一切都很好。实际上,我将log4jjar的名称复制到jnlp中,因此文件名匹配。我还检查了log4j-1.2.17.jar是否有丢失的Logger类,它就在那里。我建议您打开
Java控制面板
,检查高级选项卡中的所有调试选项。启动应用程序并验证Java控制台中加载了哪些资源。我假设您已经检查了lib/log4j-1.2.17.jar是否存在?有正确的数字和案例敏感性吗?@Steffen Nieuwenhoven是的,我已经检查过了,一切都很好。实际上,我将log4jjar的名称复制到jnlp中,因此文件名匹配。我还检查了log4j-1.2.17.jar是否有丢失的Logger类,它就在那里。我建议您打开
Java控制面板
,检查高级选项卡中的所有调试选项。启动应用程序并验证Java控制台中加载了哪些资源。