2

我在 Java 1.6 中使用了一些JSR166类,其中一些在java.util.concurrent. 我在 OSX 上,但我希望它最终能在 Linux 上运行。

如果我设置这个环境变量,我可以运行我的项目:

export MAVEN_OPTS=-Xbootclasspath/p:/Users/me/.m2/repository/org/codehaus/jsr166-mirror/jsr166/1.7.0/jsr166-1.7.0.jar

我尝试按照此处的说明进行操作,并将设置放入我的pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <version>3.0</version>
      <compilerArguments>
        <verbose/>
        <bootclasspath>/Users/me/.m2/repository/org/codehaus/jsr166-mirror/jsr166/1.7.0/jsr166-1.7.0.jar</bootclasspath>
      </compilerArguments>
    </configuration>
</plugin>

不幸的是,这给出了一个关于无法找到的错误java.lang。如果我在中添加对classes.jar(显然是 OSX 的版本rt.jar)的引用,bootclasspath我可以修复该错误,但这只会让我回到我开始的地方:

java.lang.SecurityException: Prohibited package name: java.util.concurrent

我应该如何设置 maven 以正确使用此参数?

4

2 回答 2

0

您应该检查安全管理器。不幸的是,我不知道 OSX 的具体情况。默认情况下,JVM 使用在 JAVA_HOME/jre/lib/security 文件夹下的 java.security 和 java.policy 文件中定义的安全策略。还要检查 JVM 的 -Djava.security.manager 和 –Djava.security.policy 选项。

于 2012-12-03T19:45:19.493 回答
0

您不应该为此使用 extdir 而不是 bootclasspath 吗?

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-extdir /Users/me/.m2/repository/org/codehaus/jsr166-mirror/jsr166/1.7.0/</arg>
          </compilerArgs>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

来自http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html

于 2015-08-20T08:40:05.487 回答