【发布时间】:2020-11-01 22:02:45
【问题描述】:
好的,所以我遇到了一个问题,一旦我将我的 Java Swing 项目导出到一个可运行的 jar 文件中,我编写的功能的一部分就根本不起作用。即读取文件“TryndaUpdate101720.tsv”。当我在 IDE eclipse 中测试它时它工作正常,但是一旦它被导出它就不能像在测试环境中那样运行。
我已经查找了这个问题,但找不到任何解决方案。还有另一种方法可以使它读取“TryndaUpdate101720.tsv”,但它对用户不友好,因为我必须在可运行的 jar 文件之外包含“TryndaUpdate101720.tsv”,并且必须从用户那里获取输入以获取它的路径。我真的不想这样做。
读取文件代码的实现:
allRows = parser.parseAll(new FileReader(this.getClass().getResource("/sim/resources/TryndaUpdate101720.tsv").getPath()));
这是我在运行导出的可运行 jar 文件时遇到的错误。我已将错误加粗以表明这是代码中断的文件路径。我的猜测是因为“!”在文件路径中。
java.io.FileNotFoundException: **file:\C:\Users\ssimr\Downloads\TryndaMatchUpGui.jar!\sim\resources\TryndaUpdate101720.tsv (The filename, directory name, or volume label syntax is incorrect)**
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:211)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:153)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:108)
at java.base/java.io.FileReader.<init>(FileReader.java:60)
**at sim.gui.WhichChamp.getChampFromTSV(WhichChamp.java:217)**
at sim.gui.Expertimentgui$4.mouseClicked(Expertimentgui.java:368)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6617)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6379)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4557)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
【问题讨论】:
标签: java swing oop user-interface jar