我使用NetBeans编写了一个工具,当它在IDE中运行时,它正在工作。我已将工具所需的所有源文件放入resources
文件夹。
构建和清理后,程序没有启动,它抛出异常 - >找不到档案。
我使用相对路径来使用我需要的数据,例如:
view.jIconRed1.setIcon(
new javax.swing.ImageIcon(
getClass().getResource("/usaTrafficResearchTool/resources/Icons/CheckMark22x20.png")));
它工作正常,直到我构建它。在我尝试了一些事情之后,Clean and Build甚至不再起作用了:
线程中的异常“AWT-EventQueue-0”java.lang.NullPointerException
更新
谢谢大家的帮助!!感激不尽。
这是Stacktrace(“第一个”,它找不到它应该读取的.txt):
C:\Users\rkryp_000>java -jar "D:\Raffa\Dokumente\USATrafficTool_V2.1\USATrafficLawResearchTool\dist\USATrafficLawResearchTool.jar"
Sep 24, 2015 12:53:32 PM presenter.Presenter getStateLinesFromTxt
SCHWERWIEGEND: null
java.io.FileNotFoundException: file:\D:\Raffa\Dokumente\USATrafficTool_V2.1\USATrafficLawResearchTool\dist\USATrafficLawResearchTool.jar!\usaTrafficResearchTool\resources\Data\stateResources.txt
(Die Syntax f³r den Dateinamen, Verzeichnisnamen oder die Datentrõgerbezeichnung ist falsch)
(英文:文件名,foldername或驱动器名称的语法错误。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at presenter.Presenter.getStateLinesFromTxt(Presenter.java:89)
at presenter.Presenter.setStateList(Presenter.java:63)
at presenter.Presenter.main(Presenter.java:194)
以下是我的Filereader的样子:
private static void setStateList() throws URISyntaxException {
URL fileNameAsUrl = MainScreen.class.getClassLoader().getResource("usaTrafficResearchTool/resources/Data/stateResources.txt");
private static List getStateLinesFromTxt(URL fileNameAsUrl) {
List array = new List();
try {
BufferedReader reader = new BufferedReader(new FileReader(new File(fileNameAsUrl.getFile())));
String line;
我检查了.jar文件是否正确打包,看起来是这样,.txt文件的路径实际上是正确的。
感谢您的支持!
答案 0 :(得分:0)
您正在类路径中搜索该文件,因此图像未正确打包到jar文件中。
打开jar文件,例如使用WinZip,查看文件是否存在。如果没有,请修复构建脚本。
答案 1 :(得分:0)
当您使用相对路径时,Java会查找相对于当前运行位置的文件,因此Java可能会在IDE内部运行时找到该文件,但在尝试在Web服务器中运行时则不会。 getClass()。getResource(...)查找相对于类路径的文件,这意味着所有已编译的.class文件位于jar内的位置。
确保文件包含在jar中,如果没有,可能在IDE中有一个选项,并确保jar中的路径与IDE中的路径相同。
答案 2 :(得分:0)
将CheckMark22x20.png
文件放入src/resources/Icons/
(src/resources/Icons/CheckMark22x20.png
)文件夹并将代码更改为
view.jIconRed1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/Icons/CheckMark22x20.png")));
现在清理并构建jar文件。它应该没有任何问题。