我想指定-Djava.library.path =。/ src / main / resources的vm args以便自动获取dll,并且我想在maven中指定它,因此其他开发人员不必手动配置eclipse。
我想也许maven eclipse插件可能有帮助,所以我可以做类似
的事情<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.7</version>
<configuration>
DO MAGIC HERE ???? <<-----
</configuration>
</plugin>
但是我看不到从插件中添加VM args的方法。
我已修复此问题,以便在命令行中通过maven运行我的测试
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<argLine>-Xmx768m -Xms128m -Djava.library.path=${basedir}/src/main/resources/</argLine>
</configuration>
</plugin>
我目前的解决方案是,我必须告诉开发人员手动将其添加到eclipse中,这看起来并不是很好。
有没有人对如何解决这个问题有任何想法。
欢呼声,
大卫。
答案 0 :(得分:1)
也许这应该是一个更普遍的问题:
有没有办法向VM添加DLL而不必通过库路径指定它?
我已经读过将dll放在应用程序根目录中并在MANIFEST.MF中使用其哈希码指定DLL的情况,触发VM自动获取它。但这可能是完全错误的。
答案 1 :(得分:1)
我对您的问题的解释是您的应用程序正在加载DLL,并且此DLL位于资源文件夹中的项目中。正确的吗?
如果DLL位于类路径中的文件夹内并使用以下命令加载它,则可以获取DLL的完整路径:
// assuming dll is located in the default package
URI dllUri = this.getClass().getResource("/mydll.dll").toURI();
File dllFile = new File(dllUri);
System.load(dllFile.getCanonicalPath());
这与maven无关。只有两个问题: