.jar文件出错 - 尝试在jar文件夹中找到文件

时间:2016-09-08 17:35:01

标签: java intellij-idea jar path executable

希望这会有所帮助。我是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文件夹并抛出错误。所以我根本无法执行该文件。任何解决此错误的建议都非常感谢!

1 个答案:

答案 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);
}