Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图用ant编译_Java_Ant_Jvm - Fatal编程技术网

Java 试图用ant编译

Java 试图用ant编译,java,ant,jvm,Java,Ant,Jvm,我试图用“ant build”编译我的项目,但我遇到了以下错误: 找不到tools.jar。希望能在 /usr/lib/jvm/java-6-openjdk/lib/tools.jar 我搜索了tools.jar,它就在/usr/lib/jdk1.7.0_01/lib/tools.jar中 创建下面这样的符号链接是个好主意吗 ln-s/usr/lib/jdk1.7.0_01/lib/tools.jar /usr/lib/jdk1.7.0_01/lib/tools.jar 嗯。。实际上,我试图创建

我试图用“ant build”编译我的项目,但我遇到了以下错误:

找不到tools.jar。希望能在 /usr/lib/jvm/java-6-openjdk/lib/tools.jar

我搜索了
tools.jar
,它就在
/usr/lib/jdk1.7.0_01/lib/tools.jar

创建下面这样的符号链接是个好主意吗

ln-s/usr/lib/jdk1.7.0_01/lib/tools.jar /usr/lib/jdk1.7.0_01/lib/tools.jar

嗯。。实际上,我试图创建该符号链接,但随后出现以下错误:

构建失败/home/me/code/StockWatcher/BUILD.xml:29: java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main: 不支持的major.minor版本51.0

所以我不知道最后一个错误是否是因为符号链接


Javi

您对JVM的引用不同。创建从一个版本到另一个版本的符号链接实际上是个坏主意,因为您违反了版本兼容性。如果您的ant像您所说的那样使用一些属性,那么最好找到具有这些属性的文件并将其更改为您的实际位置。

您的
java\u HOME
环境变量的值是多少?我相信这就是Ant用来确定JVM所在位置的方法


因此,如果将此环境变量设置为
/usr/lib/jdk1.7.0_01
,则可能会解决您的问题。

不创建符号链接不是一个好主意(混合两个JDK)

Ant使用与运行Ant本身相同的Java版本。如果您想使用Java1.7,您应该指导Ant。从
javac
任务文档中:

可以使用不同的编译器。这可以通过以下方式指定: 设置global build.compiler属性,这将影响 通过设置编译器,生成过程中的所有任务 属性,特定于当前任务或使用嵌套 实现的任何TypeDefed或ComponentDefed类型的元素 org.apache.tools.ant.taskdefs.compilers.CompilerAdapter。有效值 对于build.compiler属性或编译器属性:

  • classic(JDK1.1/1.2的标准编译器)–javac1.1和javac1.2 可以用作别名
  • modern(JDK1.3/1.4/1.5/1.6/1.7的标准编译器)——javac1.3和javac1.4、javac1.5和javac1.6以及javac1.7(因为Ant 1.8.2)可以用作别名。吉克斯(英国)
  • Jikes编译器)
  • jvc(微软SDK中的命令行编译器 对于Java/Visual J++),可以使用microsoft作为别名
  • kjc(美国) kopi编译器)
  • gcj(来自gcc的gcj编译器)
  • sj(赛门铁克java 编译器)–symantec可用作别名。extJavac(运行 在自己的JVM中使用现代或经典)
如果您想使用与Ant相同的Java版本,请确保您正确安装了它(并且您安装了JDK,而不仅仅是JRE)

这里也有重复的问题(对于Ant)