我在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才能正确使用此参数?
答案 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