java – 运行时未找到jar中的类,但用于编译
从ant文件构建这个项目后,我收到一个包含我构建的所有类的jar.当我尝试运行此jar时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/SceneGraphObject 这个错误表明其中一个罐子,特别是来自java3d的j3dcore.jar,我用的是无法找到的.但是,通过将ant构建编译到类文件中时,此jar位于类路径中. 为什么在运行时找不到这个类,但是在编译时可以找到它?在运行jar时我是否必须在shell中手动更改我的类路径以及在ant构建中更改它? 如果我使用java -cp j3d / * .jar -jar idv.jar将jar添加到我的类路径中 我收到错误错误:无法找到或加载主类j3d.j3dutils.jar 解决方法
是的,一点没错.在编译时使类可用不会将类嵌入到输出或类似的东西中.它只是让它可供编译器使用(找出存在的方法等).
是的,它会 – 因为它正在扩展为: java -cp j3d/foo.jar j3d/bar.jar ... -jar idv.jar 鉴于this documentation,我不清楚-cp是否适用于-jar:
一个选项是set the classpath within the manifest of the jar file itself.例如: Class-Path: j3d/foo.jar j3d/bar.jar 另一种方法是暂时忽略-jar命令行选项,并使用: java -cp j3d/*:idv.jar your.class.name.Here 注意*而不是* .jar,如下所示:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |