我们在一个奇怪的unix-ish开发平台下使用maven时遇到了一些问题。由于在默认安装的java中出现奇怪的JDK / JRE混淆,maven编译器插件抱怨无法找到tools.jar
。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:
2.5.1:compile (default-compile) on project xyz: Fatal error compiling:
tools.jar not found: our-java-home-dir/../lib/tools.jar -> [Help 1]
../lib/tools.jar
应该是lib/tools.jar
。 Java安装(Java 7)似乎是一个JDK,但不知何故,java将其检测为仅仅是一个JRE,因此存在混淆。在查看java代码正在做什么时,它必须认为我们已经安装了JRE,并期望JAVA_HOME
指向真实jre
的{{1}}子目录。没有任何复制,符号链接或其他hackery似乎对我们有用JAVA_HOME
与../lib
相同。
我们在intertubes上看到了很多类似的问题,但没有一个有很大的帮助。我们无法像在其他平台上那样重新安装Java或任何解决方案,但它应该是一个完整的JDK并包含lib
子目录中的所有j *工具。
答案 0 :(得分:0)
...找不到tools.jar:our-java-home-dir /../ lib / tools.jar - > [帮助1]
对我们来说似乎有用的一个解决方案是将bin
文件强制移动到maven命令的boot-class-path上。我们使用以下程序来转储boot-class-path的当前值:
tools.jar
然后我们修改了public class Main {
public static void main(String[] args) {
System.out.println("Boot-class-path=" +
System.getProperty("sun.boot.class.path"));
}
}
中mvn脚本的结尾以插入$M2_HOME/bin/mvn
选项:
-Xbootclasspath
我们将$MAVEN_OPTS \
-Xbootclasspath:existing-boot-class-path-here:${JAVA_HOME}/lib/tools.jar \
-additional-maven-options-go-here...
条目添加到上面的主程序吐出的值的末尾。当然还有其他的maven选项需要留在那里。
希望这有助于其他人。