NetBeans构建时无法找到rt.jar

时间:2012-10-22 16:52:14

标签: java netbeans build

我在NetBeans7.2中有一个简单的Java项目,当我尝试清理/构建它失败时:

Building jar: D:\MEUS PROJETOS\_Workspace\JavaWorkspace\Mina\dist\Mina.jar
To run this application from the command line without Ant, try:
java -jar "D:\MEUS PROJETOS\_Workspace\JavaWorkspace\Mina\dist\Mina.jar"
Realizando o ofuscamento do código
Obfuscating dist/Mina.jar...
Created dir: D:\MEUS PROJETOS\_Workspace\JavaWorkspace\Mina\build\obfuscated
ProGuard, version 4.8
Reading program jar [D:\MEUS PROJETOS\_Workspace\JavaWorkspace\Mina\dist\Mina.jar]
Reading library jar [C:\Program Files\Java\jdk1.7.0\jre\lib\ext\jna.jar]
Reading library jar [C:\Program Files\Java\jdk1.7.0\jre\lib\ext\mysql-connector-java-5.1.21-bin.jar]
Reading library jar [C:\Program Files\Java\jre7\lib\rt.jar]
Reading library jar [C:\Library\Java\Home\lib\rt.jar]
D:\MEUS PROJETOS\_Workspace\JavaWorkspace\Mina\build.xml:28: Can't read [C:\Library\Java\Home\lib\rt.jar] (No such file or directory)
BUILD FAILED (total time: 5 seconds)

这很奇怪,因为我在我的项目库中调用了[C:\ Library \ Java \ Home \ lib \ rt.jar](没有“C:\ Library”在我的电脑里)!

另外,为什么再次调用“rt.jar”,如果它已经从“C:\ Program Files \ Java \ jre7 \ lib \ rt.jar”调用了?

我完全不知道它来自哪里,也不知道我可以在哪里更改它(因为它不在我项目的库列表中)。

提前致谢!原谅我糟糕的英语......

EDITED: 我只是发现在编译(构建)应用程序时不会发生此问题,但是当NetBeans的ProGuard4.8插件尝试进行混淆时!

1 个答案:

答案 0 :(得分:1)

我认为“简单Java项目”是指“文件”菜单中NetBeans“新建项目...”操作中“Java”类别中的“Java应用程序”项目。

Netbeans默认build systemAnt。 Ant是从项目中编译,打包和运行源代码的程序。

如果在项目“属性”窗口中找不到字符串“C:\ Library \ Java \ Home \ lib \ rt.jar” where ,则要查找的下一个位置是属性项目根目录下的nb-folder中的文件(从“Projects”更改为“Files”视图)或build {-impl} .xml文件。

右键单击“项目”视图中的项目图标,单击“清理并生成”操作时,ant将读取build.xml文件(导入build-impl.xml文件),找到清除和jar targets,计算成功运行上述目标所需的所有依赖目标和properties,并最终运行计算出的目标序列。

但是,如果它是通过NetBeans“New project”操作创建的项目,则会自动生成build.xml和nb-project,并且从GUI effectivley更改项目属性会更改build-impl.xml和一些其他文件。如果您没有编辑自动生成的文件,那么这不是要查找的地方。

接下来要考虑的是它是否是Netbeans缓存问题,请参阅here的位置,输入该目录并删除其内容(我不能保证它会有所帮助)。

有趣的是,rt.jar通常位于JRE_HOME / lib目录中,其中JRE_HOME是某些JRE安装的完整路径,因此可能会导致您有一个JRE_HOME environment variable设置为此的结论(不存在)位置。

这一切都只是猜测,但这一点应该对你有所帮助。请反馈。