【问题标题】:Set vm default arguments via maven for eclipse通过 Maven 为 Eclipse 设置 vm 默认参数
【发布时间】:2011-05-26 11:48:35
【问题描述】:

我想指定 -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 参数的方法。

我已经修复了这个问题,以便在命令行中通过 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 中,这似乎不太好。

有没有人知道如何解决这个问题。

干杯,

大卫。

【问题讨论】:

  • 你有想过这个吗?

标签: eclipse maven jvm-arguments maven-eclipse-plugin


【解决方案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的。只有两个问题:

  1. 解决方案与系统无关,因为您在 getResource() 的参数中指定了文件的后缀
  2. 如果 DLL 在 JAR 中,这将不起作用。对于这种情况,我们构建了一个 JAR 提取器,它将 DLL 提取到一个临时文件夹,并使用临时文件夹中的文件调用 System.load()。

【讨论】:

  • 您好,我已经尝试过这种方法(作为 Davids 开发人员之一),但不幸的是它不起作用。就好像没有加载任何东西(即使它已经加载了)。干杯
【解决方案2】:

也许这应该是一个更笼统的问题:

有什么方法可以将 DLL 添加到 VM 而无需通过库路径指定它?

我在某处读过,将 dll 放在应用程序根目录中并在 MANIFEST.MF 中指定 DLL 及其哈希码会触发 VM 自动拾取它。但这可能是完全错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2013-04-13
    相关资源
    最近更新 更多