如何调整相对和;将eclipse java项目导出到可执行jar时的绝对路径?

如何调整相对和;将eclipse java项目导出到可执行jar时的绝对路径?,java,eclipse,jar,relative-path,absolute-path,Java,Eclipse,Jar,Relative Path,Absolute Path,好的,我在eclipse中有一个名为SWT的项目。在本项目的一个类中,有一个代码: public static String rpath = "..\\SWT\\src\\data.txt"; public static String path = new File(rpath).getAbsolutePath(); 如果我在eclipse中编译并运行我的项目,我的程序就能够找到data.txt并将其用作输入,这是文件的预期用途 然后我将这个项目导出到一个可执行的jar文件中,打开命令提示符并

好的,我在eclipse中有一个名为SWT的项目。在本项目的一个类中,有一个代码:

public static String rpath = "..\\SWT\\src\\data.txt";
public static String path = new File(rpath).getAbsolutePath();
如果我在eclipse中编译并运行我的项目,我的程序就能够找到data.txt并将其用作输入,这是文件的预期用途

然后我将这个项目导出到一个可执行的jar文件中,打开命令提示符并输入java-jarswt.jar。程序将打开,但在命令提示符下出现以下错误:

java.io.FileNotFoundException:C:\Users\Yoshikawa\workspace\SWT\..\data.txt(系统找不到指定的文件)

我的问题:


在将代码导出到可执行jar之前,如何修改代码,以便使可执行jar能够找到data.txt?顺便说一句,我的可执行jar已经包含data.txt,但是无法使用上面指定的相对路径来找到它的确切位置,这一点我觉得非常奇怪。

您的jar文件中将没有src目录。只有包名和类文件。

请尝试以下操作:

URL url = ClassLoader.getSystemResource("/data.txt");
File file = new File(url.toURI());

更多信息。

您可以将文件data.txt放在某个软件包中,然后使用此软件包中的类执行以下操作:

URL url = ClassFromSamePackageOfFile.class.getResource( "data.txt" );

File f;
try {
  f = new File(url.toURI());
} catch(URISyntaxException e) {
  f = new File(url.getPath());
}

在哪里添加这两行代码?我是添加删除上面的两行并替换为这一行,还是将其添加到这一行之外?我也希望它得到的文件路径是字符串格式。