基本背景数据:Windows 7,Netbeans 8.0.2,LWJGL 2.9.3,Slick Util。 其余的代码是我自己的。
因此,定期地,我遇到了我认为是错误的错误,导致我的程序在IDE中运行,但是当我在项目中使用“清理和构建”时会失败。
今天,当它再次发生时,我决定深究它。因此,获取整个项目文件夹的副本,该文件夹工作且相同,并且一次替换1个文件并对其进行测试,我能够将其缩小到/nbproject/project.properties文件。
可以替换其他所有文件并且问题仍然存在。仅替换此文件,问题就消失了。然后我加载了两个文件并将它们并排比较(使用Netbeans“Diff to ...”功能)并将其缩小到以下几行:
javac.classpath=\
${libs.LWJGL-2.9.3.classpath}:\
${libs.0-Slick_Util.classpath}:\
${libs.0-Loaders_v03.classpath}:\
${libs.0-Text2D_v03.classpath}:\
${libs.0-Foundation_v04.classpath}:\
${libs.0-Abstracts_v04.classpath}
现在这段代码看起来像告诉编译器应该加载库的ORDER(我可能错了)。
考虑到这一点,我决定测试它。我将这个块从工作文件复制到非工作文件,它运行得很好。工作代码btw是这样的:
javac.classpath=\
${libs.LWJGL-2.9.3.classpath}:\
${libs.0-Slick_Util.classpath}:\
${libs.0-Foundation_v04.classpath}:\
${libs.0-Abstracts_v04.classpath}:\
${libs.0-Loaders_v03.classpath}:\
${libs.0-Text2D_v03.classpath}
您可能会注意到的唯一区别是ORDER。继续我的测试,我进入了非工作项目的库属性页面,只需重新排序库以匹配工作列表。问题就在于此!如果我只是简单地将基础和摘要库移到列表中,那么问题就会回来!
我必须尝试过十几个不同的订单组合,并且大约有2/3失败了,而1/3有效。所有涉及基础和/或摘要的工作都接近顶部。
错误顺便说一句:
F:\Dropbox\2-Documents\4-Java Programming\Library\0-LoadingScreen_v04-Copy\src\A_Library\Test_LoadingScreen.java:94: error: cannot find symbol
Lib_Foundation .setConfigLocation(configLocation);
symbol: method setConfigLocation(String)
location: class Lib_Foundation
任何有助于我将来避免此问题的信息都将受到赞赏。
答案 0 :(得分:1)
看起来“Loaders_v03”或“Text2D_v03”包含自己的Foundation版本,包括不兼容的Lib_Foundation类。按顺序搜索类路径,因此当前的解决方案重新排序javac.classpath
- 将始终有效,假设NetBeans在您下次对项目进行任何更改时不会弄乱它。
是否会破坏Loaders和Text2D取决于Foundation坚持面向对象设计的程度:公共类及其公共成员永远不会在连续版本中被更改或删除。 (这就是为Java 1.1编写的20年代码仍将在Java 8中编译的原因。)