摘要 - 此代码:
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)
...
答案 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";