从里面的Class中找到一个jar的路径?
插件xyz应该在Java项目之上运行并生成一些Java代码。 这段代码需要在构建和运行时在插件的jar中提供的类。 因此,插件的jar(或安装目录)应该出现在构建类路径中。
一个插件如何找到它自己的jar /安装目录的确切路径,或者,就此而言,以便携方式找到一些相关插件jar的路径?
背景是我想制作一个用户可以运行的向导来启用项目的xyz特性。 应为用户提供有意义的默认值,以便在何处查找所需的运行时function,并将给定的库添加到构建路径中。
我们用它来查找类的位置:
public static URL getLocation(final Class cls) { final ProtectionDomain pd = cls.getProtectionDomain(); final CodeSource cs = pd.getCodeSource(); return cs.getLocation(); }
不知道它来自哪里。
提供插件时最可靠的方法是使用org.osgi.framework.Bundle.getEntry(String)
获取jar文件的URL,并使用org.eclipse.core.runtime.FileLocator.toFileURL(URL)
返回文件系统中jar的绝对路径。
然后您可以选择将该位置用于java项目类路径,或将jar复制到java项目工作区。
有关其他示例,请参阅https://stackoverflow.com/a/8337766/713646 。
PW
- 如何在netbeans中添加java classpath
- 控制servlet中的类路径
- 如何解决此错误引起:java.lang.ClassNotFoundException
- GWT web-app与动态加载类的系统类路径
- 如何在尝试运行LWJGL“Hello World”时解决此JNI错误?
- 在调用Weka时无法找到或加载主类
- ClassNotFoundException在修改后的SimpleShortestPathsVertex上运行GiraphRunner
- Java:来自class.getResource(…)的NullPointerException
- 当JUnit类有多个导入时,如何从Windows CMD窗口运行JUnit测试?