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

时间:2011-10-13 22:05:25

标签: java ant compilation compiler-errors javac

我在使用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)]

3 个答案:

答案 0 :(得分:0)

查看您获得的特定编译器错误,类路径等会很有帮助。如果它是从eclipse而不是在ant中工作,则可能是类路径问题,即您的ant脚本没有设置相同的classpath作为eclipse中的项目设置。

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

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

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

答案 1 :(得分:0)

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

抱歉浪费每个人的时间!

答案 2 :(得分:0)

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

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

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

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