1

摘要- 此代码:

File f = new File("dbFile.dat");
f.getAbsolutePath();

回报:

/Applications/dbFile.dat

问题是我的应用程序的资源(例如 3d 方 jars)位于“Applications/Foobar.app/...”中。

如何在不硬编码任何内容的情况下获取我的安装文件夹的路径?

详情

我正在使用需要为其提供文件名的 3d 方库:

ls = new LookupService("dbFile.dat");

分发后,此文件位于我的安装文件夹的根目录中,在可执行文件旁边 - 在 Windows 上运行良好。

但是,在 Mac 上我得到一个 FNF 异常,因为库没有在正确的位置搜索:

java.io.FileNotFoundException: dbFile.dat (The system cannot find the file specified)
    at java.io.RandomAccessFile.open(Native Method)
    at java.io.RandomAccessFile.<init>(Unknown Source)
...
4

2 回答 2

1

尝试这个:

URL myClass = MyClass.class.getResource("MyClass.class");
System.out.println(myClass.getPath());

这将打印出如下内容:

file:/home/mike/test.jar!/MyClass.class

你可以从中解析出你需要的东西。

于 2013-08-08T10:45:36.533 回答
0

我发现“/Applications/foobar.app/.../dbFile.dat”路径的“foobar.app/.../dbFile.dat”部分是在 Ant 构建文件中定义的,因此可能不是正如我最初认为的那样,用户在安装时可能会更改,所以我使用了:

String pathToUse = PlatformDetector.IsMacOS() ? "/Applications/foobar.app/.../dbFile.dat" : "dbFile.dat";     
于 2013-08-08T10:19:20.360 回答