我创建了一个我想通过Web start部署的App Client应用程序。该应用程序在Eclipse中工作,我在ear文件中自行签名了jar文件。当我点击链接下载它时,我收到消息:
java.io.IOException: Invalid jar file
我需要做些什么来清除它?
Exception in thread "main" java.lang.NoClassDefFoundError: com/jme3/app/SimpleApplication
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: com.jme3.app.SimpleApplication
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
[编辑更新] 在我使用导出选项包含依赖库之后,jar文件现在在本地运行。我已经对jar文件进行了自签名,但我仍然通过webstart获得了无效的jar文件响应。现在150mb的罐子大小会引起问题吗?
答案 0 :(得分:1)
当JAR本身实际上不是可执行的JAR时会发生这种情况。一个真正的可执行文件 JAR应该至少有一个带有main()
方法的类,并在MANIFEST.MF
中引用它。 Eclipse中的重要一点是,您将JAR导出为可运行的JAR文件。
请参阅Corrupt jar file或Make a .JAR file using classes, ERROR : invalid or corrupted file