我已经尝试过相关线程中发布的方法(获取受保护域等),但是当 Jar 在 SuSE Linux Enterprise Server 10 中运行时,返回的字符串只是一个点 (.),表示当前工作目录。
我有一个 jar,它需要本地库来获取已经在运行用于生产的 java 应用程序的服务器上的系统信息(所以我不相信我可以在不发生坏事的情况下弄乱 java.library.path)。
我希望我能发现正在运行的 jar 的路径,以便我可以使用该字符串来形成 System.load("my/path/to/native/libs") 语句,因为我知道这是可行的。尝试将 System.loadLibrary 用于相对路径失败 - 本机库位于我正在部署的 java 应用程序的根目录中。
这是我从另一个线程尝试的方法之一:
File fl = new File(SystemInfoGrabber.class.getProtectionDomain().getCodeSource().getLocation().getPath());
System.out.println(fl.getPath());
这会在 SuSE 中返回句点 (.)