Java Jar访问外部文件

Java Jar访问外部文件,java,eclipse,file,jar,Java,Eclipse,File,Jar,我的文件夹结构如下: 我的文件夹: file1.xml file2.xml project.jar 但如果在我使用的类中: File f = new File("file1.xml"); 我收到一个错误,因为它找不到文件。为什么?如果您使用的是Windows,那么您发布的代码将起作用,但在默认父文件是您的主文件的Linux上则不起作用。 但您可以在任何操作系统中使用: public class MyClass { public void loadFile() { URL url

我的文件夹结构如下:

我的文件夹:

  • file1.xml
  • file2.xml
  • project.jar
但如果在我使用的类中:

File f = new File("file1.xml");

我收到一个错误,因为它找不到文件。为什么?

如果您使用的是Windows,那么您发布的代码将起作用,但在默认父文件是您的主文件的Linux上则不起作用。 但您可以在任何操作系统中使用:

public class MyClass {
  public void loadFile() {
    URL url = MyClass.class.getProtectionDomain().getCodeSource().getLocation();
    File jar = new File(url.toURI());
    File f = new File(jar.getParent(), "file1.xml");
    //your code
  }
}

PS:这需要在project.jar中,因为您正在获取jar文件所在的位置。

如果您使用的是Windows,那么您发布的代码将起作用,但在默认父文件是您的主文件的Linux上则不起作用。 但您可以在任何操作系统中使用:

public class MyClass {
  public void loadFile() {
    URL url = MyClass.class.getProtectionDomain().getCodeSource().getLocation();
    File jar = new File(url.toURI());
    File f = new File(jar.getParent(), "file1.xml");
    //your code
  }
}

PS:这需要在project.jar中,因为您正在获取jar文件所在的位置。

您应该在代码中使用相对路径


示例:
filef=新文件(“./file1.xml”)

您应该在代码中使用相对路径


示例:
filef=新文件(“./file1.xml”)

jar正在自己内部查找该文件,但没有找到它。您必须显式声明目录,或将XML文件移动到jar文件中。我无法将XML文件移动到jar中,因为我必须在运行时修改并更新它们。如何运行应用程序?那个时候你的工作文件夹是什么?然后声明路径。或者从属性文件中引用它。首先尝试
/file1.xml
/file2.xml
。或者将XML_目录放在可以读取和修改的属性文件中。感谢ManoDestra,它与“/file.xml”配合得很好:)(jar正在自己内部查找该文件,但没有找到它。您必须显式声明目录,或将XML文件移动到jar文件中。我无法将XML文件移动到jar中,因为我必须在运行时修改并更新它们。如何运行应用程序?那个时候你的工作文件夹是什么?然后声明路径。或者从属性文件中引用它。首先尝试
/file1.xml
/file2.xml
。或者将XML_目录放在可以读取和修改的属性文件中。并从根目录中引用它们。谢谢你,ManoDestra,它与“/file.xml”配合使用效果很好。)谢谢,伙计:)它很好用!谢谢男人:)真管用!