gij(GNU libgcj)版本

时间:2014-10-07 08:03:24

标签: java linux ssh

大家好日子! 我写了简单的程序:

import java.lang.System;

public class hello{
  public static void main(String[] args){
     System.out.println("Hello World");
  }
}

如果在本地服务器上运行它,这可以正常工作。但是,当我像这样远程访问这个程序时,我面临着问题:

ssh remote_machine "java hello"

我得到以下错误:

  Exception in thread "main" java.lang.NoClassDefFoundError: hello
at gnu.java.lang.MainThread.run(libgcj.so.7rh)
Caused by: java.lang.ClassNotFoundException: hello not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./],    parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at gnu.java.lang.MainThread.run(libgcj.so.7rh)

我发现这是因为jvm版本和代码编译java版本的不兼容性。 由于我创建并编译了机器使用java 1.5的代码,但是当我远程访问它时,它正在使用java 1.4通过" gij(GNU libgcj)版本4.1.2 20080704&#34 ;

问题:是否可以通过" gij(GNU libgcj)版本4.1.2 20080704"当我远程访问它时使用最初使用的java版本?

1 个答案:

答案 0 :(得分:0)

来源1.6 Code Generation

  

除了控制代码生成的许多gcc选项,gcj   有几种特定于自身的选择。

     
      
  • -C   此选项用于告诉gcj生成字节码(.class文件)而不是目标代码。
  •   
     

...

     
      
  • -ftarget = VERSION   这可以与-C一起使用来选择gcj发出的字节码版本。默认值为“1.5”。当不生成字节码时,这个   选项无效。
  •   

因此,您可以使用-Cftarget=1.4选项为1.4版生成字节码