繁体   English   中英

javac在.jar中找不到类,即使它们存在?

[英]javac can't find classes in .jar even though they are present?

我在使用Altova MapForce生成的编译期间包含了一个相当大的JAR文件。 JAR文件大约65MB,编译工作正常。 我需要添加更多的映射,所以我做了,重新生成了我的JAR,并尝试重新构建。 JAR现在大约80MB。

现在我得到各种“找不到符号”的错误消息,即使我已经打开JAR来验证符号是否存在! 我对JAR尺寸有什么上限吗? JAR文件中有超过75,000个类。

有趣的是,Eclipse自动完成功能与新JAR一起工作正常; 我只在构建时遇到这些错误。

如果有任何不同,我正在使用Ant。

谢谢,

布赖恩

编辑 :其他奇怪的事情:我打开了javac的详细输出。 看来我甚至在加载所有类之前就开始出现编译错误:

[javac] [loading com\mycompany\myproject\*************************.class)]
[javac] [loading com\mycompany\myproject\*************************.class)]
[javac] [loading com\mycompany\myproject\*************************.class)]
[javac] [loading com\mycompany\myproject\*************************.class)]
[javac] [loading com\mycompany\myproject\*************************.class)]
[javac] C:\Users\*************************.java:38: cannot find symbol
[javac] symbol  : class *************************
[javac] location: package com.mycompany.myproject.*************************
[javac] import com.mycompany.myproject.*************************;
[javac]                                                      ^
[javac] [loading com\altova\TraceProvider.class(com\altova:TraceProvider.class)]
[javac] [loading com\altova\io\StringInput.class(com\altova\io:StringInput.class)]
[javac] [loading com\altova\io\StringOutput.class(com\altova\io:StringOutput.class)]

在Jenkins上通过Ant构建时,我确实遇到了这个问题。 未找到的类显示错误后加载:“无法找到符号”显示在详细输出中。 多次尝试重建,没有快乐。

最后,我去了导入未找到的类的类,并更改了导入的顺序,因此问题类更接近顶部。 这是一个临时修复,只要有人在Eclipse中组织导入,它们就会按照Javac无法加载的顺序进行排序。 我们可能必须重命名该类,因此它排序到导入的顶部。

经过一些研究,我发现这与Java中的bug 7101822有关,其中急切加载类可能导致“找不到符号”错误。

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7101822

看看你得到的特定编译器错误,类路径等会很有帮助。如果它是从eclipse而不是ant中运行的,那么它可能是一个类路径问题,即你的ant脚本没有设置与你的相同的类路径eclipse中的项目设置有。

我在一个有大于80MB的jar文件的项目上工作没问题,我认为jar文件中的类数量没有上限或类似的东西。 jar的大小和它包含的类的数量不太可能是你的问题。

你可以尝试编写一个简单的测试主程序,它只导入有问题的类,并使用javac编译,只有你的类路径上的那个jar。 如果该测试不起作用,您知道您使用的jar有问题。 如果它不起作用,则必须是蚂蚁问题或类似问题。

你可以发布你的蚂蚁构建目标,以及蚂蚁的详细输出吗?

好吧,我已经解决了这个问题。 我所做的就是重新生成我的JAR(我没有改变任何东西!)并且它有效。 好像它只是一个侥幸。

抱歉浪费每个人的时间!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM