【发布时间】:2012-02-20 04:57:54
【问题描述】:
首先让我说我最近继承了一个使用 Eclipse 编写的 Java 应用程序。我是这种语言/IDE 的新手,但我对 C# 和 Visual Studio 有很多经验。所以,我的问题可能很傻,但我有基础,所以我不是一个完全的编程新手。
我使用原始开发人员提供的启动配置将这个项目导出为可运行的 JAR。我已经尝试过使用“将所需的库提取到生成的 JAR”和“将所需的库打包到生成的 JAR”中。无论哪种方式,
我在启动应用程序时都会收到以下错误:
java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
我使用此命令启动应用程序,其中appName.properties 是运行应用程序所需的属性文件:
java -jar appName.jar appName.properties
这在不同的堆栈跟踪中多次发生。我没有看到任何其他运行时错误或编译错误。我的 JRE 系统库是jre1.5.0_05。我通过从http://download.java.net/media/jai/builds/release/1_1_3/ 下载jai-1_1_3-lib-windows-i586-jre.exe 并将其安装到jre5 目录中安装了JAI。在我获得这个特定版本的 java 之前,我的项目没有编译,并将 JAI jre 安装到该版本的文件夹中,所以我相当确定我正确地把这部分放在一起。
最后,这是我的类路径:
C:\Program Files (x86)\Java\jre1.5.0_05\lib\ext\jai_codec.jar;C:\Program Files (x86)\Java\jre1.5.0_05\lib\ext\jai_core.jar;C:\Program Files (x86)\junit4.10\junit-4.10.jar;.
这里有什么明显的我做错了错误吗?是否有任何其他信息有助于找出我收到此错误的原因?
【问题讨论】:
-
尝试将您的 jar 扩展名更改为 .zip 并解压缩,在其中查找 PlanarImage.class。如果你找不到它,那么它在你的构建过程中没有被导出。如果你确实找到了它,那么还有另一个类路径噱头正在发生。
-
我找到了 PlanarImage.class,但它来自一个在项目中实际声明的接口。看起来原开发者创建了自己的 PlanarImage 界面。
-
好的,它共享同一个包吗?如果是这样,只需更改您自己的课程包
-
@MahdeTo 不,他们不共享同一个包。
-
然后你应该在里面找到这两个类,如果不能确保你的包装在你的 jar 中产生所有依赖项。考虑像 jar jar 或 big jar 这样的解决方案。试试看,让我知道