如何正确地将文件添加到maven中的bootclasspath?

时间:2012-11-27 09:07:18

标签: java maven-2 pom.xml jsr166

我在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

我尝试按照说明here并将设置放在我的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中添加rt.jar(显然是OSX版本的bootclasspath)的引用,我可以修复该错误,但这只会让我回到我开始的位置:

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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