在ubuntu中运行grails应用程序时,找不到java编译器com.sun.to

在ubuntu中运行grails应用程序时,找不到java编译器com.sun.to,java,ubuntu,grails,Java,Ubuntu,Grails,我尝试了使用此名称的不同修复。但是没有工作 我在printenvi下有以下内容 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/root/bin:/home/thinkvidya-kiran/programs/jdk1.6.0_45/bin:/home/thinkvidya-kiran/programs/jdk1.6.0_45/bin:/home/thinkvidya-kiran/prog

我尝试了使用此名称的不同修复。但是没有工作

我在printenvi下有以下内容

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/root/bin:/home/thinkvidya-kiran/programs/jdk1.6.0_45/bin:/home/thinkvidya-kiran/programs/jdk1.6.0_45/bin:/home/thinkvidya-kiran/programs/james-2.3.2/bin:/home/thinkvidya-kiran/programs/grails-2.1.1/bin
PWD=/usr/lib/jvm
JAVA_HOME=/home/thinkvidya-kiran/programs/jdk1.6.0_45
尝试

sudo ln -s /path/to/jre*/bin/java /usr/bin/java
java和javac给了我正确的输出。我试着在eclispe.ini中加入-vm。不为我工作,它给出以下错误

 | Loading Grails 2.1.1
| Configuring classpath.
| Environment set to development.....
| Compiling 1 source files..
| Compiling 2 source files.
| Error Compilation error: startup failed:
General error during semantic analysis: unable to locate the java compiler com.sun.tools.javac.Main, please change your classloader settings
java.lang.ClassNotFoundException: unable to locate the java compiler com.sun.tools.javac.Main, please change your classloader settings
    at org.codehaus.groovy.tools.javac.JavacJavaCompiler.findJavac(JavacJavaCompiler.java:190)
    at org.codehaus.groovy.tools.javac.JavacJavaCompiler.compile(JavacJavaCompiler.java:49)
    at org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit.gotoPhase(JavaAwareCompilationUnit.java:97)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:513)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:482)
    at org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:60)
    at org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:216)
    at org.codehaus.groovy.ant.Groovyc.compile(Groovyc.java:935)
    at org.codehaus.groovy.grails.compiler.Grailsc.compile(Grailsc.java:79)
    at org.codehaus.groovy.ant.Groovyc.execute(Groovyc.java:629)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at groovy.util.AntBuilder.performTask(AntBuilder.java:260)
    at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:220)
    at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:147)
    at groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:170)
    at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64)
    at org.codehaus.gant.GantBuilder.invokeMethod(GantBuilder.java:99)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at org.codehaus.groovy.grails.compiler.GrailsProjectCompiler.compile(GrailsProjectCompiler.groovy:263)
    at org.codehaus.groovy.grails.compiler.GrailsProjectCompiler$compile$0.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at org.codehaus.groovy.grails.compiler.GrailsProjectCompiler.compile(GrailsProjectCompiler.groovy:234)
    at org.codehaus.groovy.grails.compiler.GrailsProjectCompiler$compile.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at _GrailsCompile_groovy$_run_closure2_closure6_closure7.doCall(_GrailsCompile_groovy:48)

我在Debian中遇到了与Grails2.4.3最新版本相同的问题。我在类路径中添加了jdk tools.jar以克服错误

在Debian我不得不做

导出类路径=/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar


在Windows中,您必须找到tools.jar并将其添加到CLASSPATH环境变量。

我在Debian中遇到了与Grails 2.4.3最新版本相同的问题。我在类路径中添加了jdk tools.jar以克服错误

在Debian我不得不做

导出类路径=/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar


在Windows中,您必须找到tools.jar并将其添加到CLASSPATH环境变量中。

我在使用预装java在新启动的EC2实例上安装整个包时遇到了相同的问题。 检查java版本时,我发现:

ubuntu@ip-*-*-*-*:/usr/local/java$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
但检查编译器并不是那么完美:

ubuntu@ip-*-*-*-*:/usr/local/java$ javac -version
The program 'javac' can be found in the following packages:
 * default-jdk
 * ecj
 * gcj-4.8-jdk
 * openjdk-7-jdk
 * gcj-4.6-jdk
 * openjdk-6-jdk
Try: sudo apt-get install <selected package>
这就成功了:

ubuntu@ip-172-30-0-152:/usr/local/java$ javac -version
javac 1.7.0_65

我在使用预装java在新启动的EC2实例上安装整个包时也遇到了同样的问题。 检查java版本时,我发现:

ubuntu@ip-*-*-*-*:/usr/local/java$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
但检查编译器并不是那么完美:

ubuntu@ip-*-*-*-*:/usr/local/java$ javac -version
The program 'javac' can be found in the following packages:
 * default-jdk
 * ecj
 * gcj-4.8-jdk
 * openjdk-7-jdk
 * gcj-4.6-jdk
 * openjdk-6-jdk
Try: sudo apt-get install <selected package>
这就成功了:

ubuntu@ip-172-30-0-152:/usr/local/java$ javac -version
javac 1.7.0_65

你试过上面解释的步骤吗?我在usr->lib->jvm中有7种类型的java文件夹。4在那里有一个链接图标。这是我的问题吗?也许吧。看看运行哪个javac会得到什么。当我运行javac-version时,你得到了编译器吗。它给了我JavaC1.6.045。我有一个。默认javalink,2.java-1.6.0-openjdklink,3.java-1.6.0-openjdk-amd64link,4.java-6-openjdklink,5.java-6-openjdk-amd64,6.java-6-openjdk-common,7.java-7-openjdk-amd64。我的usr->lib->jvm中的文件夹你试过上面解释的步骤吗?问题是我在usr->lib->jvm中有7种类型的java文件夹。4在那里有一个链接图标。这是我的问题吗?也许吧。看看运行哪个javac会得到什么。当我运行javac-version时,你得到了编译器吗。它给了我JavaC1.6.045。我有一个。默认javalink,2.java-1.6.0-openjdklink,3.java-1.6.0-openjdk-amd64link,4.java-6-openjdklink,5.java-6-openjdk-amd64,6.java-6-openjdk-common,7.java-7-openjdk-amd64。我的usr->lib->jvmI中的文件夹很想知道为什么会这样做。你介意再解释一下吗?我很想知道为什么这能解决问题。你介意再解释一下吗?