我有一个Netbeans项目,它有一个源文件夹(在Netbeans项目文件夹之外)。现在,当我从IDE编译源代码时,一切正常。但是,当我使用自己的构建脚本时,它会在运行时发出错误。
应用程序依赖于我使用path
元素指定的几个外部库以及refid
标记中相应的classpath
属性(请参阅下面的代码)
这是我的构建文件
<project name="XX" default="dist" basedir=".">
<property name="dir.src" location="E:/XX git/xx/src"/>
<property name="nbproj" location="E:/Netbeans Project"/>
<property name="dir.dist" value="dist"/>
<path id="libs">
<fileset dir="${nbproj}/dist/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="clean">
<delete dir="dist"/>
<delete dir="release"/>
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="${dir.src}" destdir="build/classes" includeantruntime="false">
<classpath refid="libs"/>
</javac>
</target>
</project>
当我使用ant compile
编译它时,它会编译所有源文件而不会出现任何错误。但是,当我使用命令
java -cp "E:\Netbeans Project\dist\lib\*;." controller.CZSaw
它很好地创建了应用程序GUI,然后当我执行某些操作时,它失败并出现以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
at controller.viewsynchronizer.CZViewManager.getIcon(Unknown Source)
at view.script.CZScriptView.<init>(Unknown Source)
at controller.script.CZScriptProcessor.<init>(Unknown Source)
at controller.script.CZScriptProcessor.getInstance(Unknown Source)
...
我知道要查看源代码时会发现一些错误。但是,由于相同的代码在IDE中很好地编译和工作,我认为我编译的方式有问题。构建文件中是否有任何明显的错误。
如果我在这里错过了一些有用的信息,请告诉我。
答案 0 :(得分:1)
经典错误:假设因为“一切正常”在一个环境中意味着你已经做好了一切,并且对于随后出错的事情都无可指责。
这意味着您的IDE会处理一些您不知道的事情。
看看你的第一堂课:
controller.viewsynchronizer.CZViewManager.getIcon(Unknown Source)
看起来你的控制器正在寻找一个不在CLASSPATH中的图标图像。