希望这会有所帮助。我是Java的新手,虽然之前我已经构建了.jar工件,但我从来没有必要构建一个将另一个文件作为输入的程序。我遇到了一个奇怪的问题而且我不确定如何修复它。
基本上,我有一个Main.java类,它调用.txt文件并将其传递给另一个类myClass.java。我用IntelliJ生成了一个.jar文件,它将自己插入到自己的文件夹中。
为了方便起见,这是我的程序的基本结构。
/src
/com.myProgram
Main.java
input.txt
MyClass.java
/out
/artifacts
/myProgram_jar
myProgram.jar
这是Main.java中的基本版本
myClass mc = new myClass("input.txt");
我尝试使用命令" java -jar myProgram.jar"运行.jar文件,我收到错误"系统找不到指定的路径"。我在input.txt上运行了getCanonicalPath()。显然我的程序在out / artifacts / myProgram_jar中而不是在src /文件夹中查找input.txt。
我该怎么办?即使我把完整的路径强制程序查看src /文件夹,它仍然会尝试查看myProgram_jar文件夹并抛出错误。所以我根本无法执行该文件。任何解决此错误的建议都非常感谢!
答案 0 :(得分:0)
当您构建jar文件时,它不再是文件。文件只是文件系统上的物理文件
所以有两种方法来解决它:
1. 您将txt文件导出到系统为D:/ New文件夹,然后您将获得此文件包含此文件的路径。
2。你可以试试这个:
try {
URL url = new URL(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().toString()+your path to file in structre);
InputStream in = url.openStream();
} catch (URISyntaxException ex) {
Logger.getLogger(PrepareGUI.class.getName()).log(Level.SEVERE, null, ex);
}