无法获得System Java Compiler。请使用JDK,而不是JRE

时间:2013-04-13 07:22:57

标签: java google-app-engine

我得到无法获得System Java编译器。当jsp文件在我的项目中并将其部署到Google App Engine时,请使用JDK,而不是JRE。。所以我尝试了以下方法来解决问题:

  1. 将-vm C:\ Program Files \ Java \ jdk1.6.0_43 \ bin \ javaw.exe添加到我的eclipse.ini。
  2. 确保JDK位于项目的构建路径中,而不是jre。
  3. 将C:\ Program Files \ Java \ jdk1.6.0_43 \ bin \添加到PATH for Environment Variable。
  4. 但这些都没有解决问题。我怎么解决这个问题?

14 个答案:

答案 0 :(得分:35)

-vm C:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe添加到eclipse.ini时,请务必将-vmC:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe放在不同的行上

答案 1 :(得分:30)

以下两件事对我有用。

1)确保您的JAVA_HOME路径设置为JDK且JAVA_HOME包含在PATH中。

2)在eclipse.ini中添加以下两行代码。它应该如下所示。

-vm
C:\Program Files\Java\jdk1.7.0_03\bin\javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20130807-1835-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m

答案 2 :(得分:15)

你能在这里粘贴你的eclipse.ini文件吗? 我刚刚在几天前添加了vm行,它工作正常。

请记住它必须放在-vmargs行之前......

答案 3 :(得分:5)

我有同样的问题并得出结论:

如果使用JRE执行Eclipse,则在部署到App Engine时将使用JRE而不是JDK,即使Preference设置设置为使用JDK也是如此。

解决方案:将JAVA_HOME路径从JRE更改为JDK,并确保JAVA_HOME \ bin包含在PATH中。然后,重新启动Eclipse。

答案 4 :(得分:3)

我在上传示例war留言簿时遇到了同样的错误[“无法获取系统java编译器”]。我安装了JDK,“java -version”可以正确打印版本信息。哪个部分出了问题呢? 问题的原因在于:

  

除%JAVA_HOME%/ bin目录外,java.exe / javaw.exe也存在于C:\ Windows \子目录中。

upload命令使用c:\​​ windows \ sub-directory中的java.exe而不是%JAVA_HOME%目录中的java.exe。 的解决方案:
将“%JAVA_HOME%/ bin”放在PATH环境变量定义的开头。这应该保证使用%JAVA_HOME%的东西。

答案 5 :(得分:3)

我通过编辑Google App Engine SDK文件夹下的 appcfg.cmd 文件解决了这个问题。

appcfg.cmd 文件位于

  

{eclipse目录} \ plugins \ com.google.appengine.eclipse.sdkbundle_1.8.8 \ appengine-java-sdk-1.8.8 \ bin

将命令中的 java 字符串更改为jdk文件夹下java.exe的特定位置:

原件:

  

java -Xmx1100m -cp“%~dp0 .. \ lib \ appengine-tools-api.jar”com.google.appengine.tools.admin.AppCfg%*

更改后:

  

“C:\ Program Files \ Java \ jdk1.7.0_45 \ bin \ java.exe”-Xmx1100m -cp“%~dp0 .. \ lib \ appengine-tools-api.jar”com.google.appengine。 tools.admin.AppCfg%*

答案 6 :(得分:2)

  1. 编辑eclipse ini并添加  的 -vm  C:\ Program Files \ Java \ jdk1.7.0_65 \ bin \ javaw.exe 如下(这些行之间):

    - launcher.defaultAction   打开文件   -vm   C:\ Program Files \ Java \ jdk1.7.0_65 \ bin \ javaw.exe  --launcher.appendVmargs

  2. 设置JAVA_HOME指向jdk文件夹(C:\ Program Files \ Java \ jdk1.7.0_65)

  3. 它非常适合我。

答案 7 :(得分:1)

最后的手段:一个简单但不太优雅的解决方案是卸载所有JRE

答案 8 :(得分:0)

转到Windows -> Preferences -> Java -> Installed JREs -> Add...,然后将JDK文件夹的路径设置为JRE home。其余字段将自动填写。然后,在列表Installed JREs中,确保将新添加的JDK标记为默认值。

答案 9 :(得分:0)

确保您的JAVA_HOME环境变量引用JDK主目录,而不是JRE。

答案 10 :(得分:0)

奇怪的是,我突然面对这个问题没有任何改变(除了从Windows 8升级到窗口8.1)。

我能够通过将-vm之前的-vmargs放在eclipse.ini文件中来解决它。

答案 11 :(得分:0)

我做了其他人说的一切,没有任何效果。我不得不改变项目类型:项目 - >属性 - >项目构面并检查动态Web模块。之后,我能够部署该项目。

答案 12 :(得分:0)

我在构建项目时在Android Studio中收到此错误。我在设置中设置了JDK位置(File ==> Settings),它解决了我的问题。

答案 13 :(得分:0)

我更新了所有建议的点以指向我的jdk1.8.0_111而不是jre:Eclipse.ini,系统路径,JAVA_HOME。还从我的路径中删除了Oracle条目:C:\ ProgramData \ Oracle \ Java \ javapath(指向jre)。最后,我找到了另一个引用jre的点,最终修复了它:

在Eclipse中 - >我的项目属性 - > Java构建路径 - > JRE系统库仍然指向我的jre。删除它,做了#34;添加库"并指出我的jdk。重新启动Eclipse,我最终可以使用jsp进行部署。

我回去并删除了JAVA_HOME,它仍然有效(JAVA_HOME会干扰其他构建系统)。

期待找到一个好的命令行构建,这样我就不会使用随机编译器。