FileNotFound异常,当文件位于Mac上的/Applications/Foobar.app中时

时间:2013-08-07 10:38:20

标签: java

摘要 - 此代码:

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

返回:

/Applications/dbFile.dat

问题是我的应用程序的资源(例如3d party jar)位于“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)
...

2 个答案:

答案 0 :(得分:1)

试试这个:

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

这将打印出类似这样的内容:

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

您可以从中解析出您需要的内容。

答案 1 :(得分:0)

我发现“foobar.app /.../ dbFile.dat” “/ Applications / foobar.app /.../ dbFile.dat的一部分“路径是在Ant构建文件中定义的,因此可能不会像我原先想的那样在安装时由用户更改,因此我使用了:

String pathToUse = PlatformDetector.IsMacOS() ? "/Applications/foobar.app/.../dbFile.dat" : "dbFile.dat";