在命令提示符中Java编译错误:类文件版本为52.0,应该是50.0。

6
我创建了一个Java库程序,并将其作为.jar文件在另一个Java程序中使用。我的IDE是NetBeans。我尝试通过命令行使用相同的概念,但遇到以下错误:
class file has wrong version 52.0, should be 50.0 Please remove or make sure it appears in the correct sub directory of the class path. import Demo1_Lib.Test1; ^
以下是我的步骤。
第一步:在NetBeans IDE中创建了以下类库。
  package Demo1_Lib;

 /**
  *
  * @author tveluppillai
 */
public class Test1 
{
  public void print() 
  {
    System.out.println("hello");
  }    
 }

步骤2:在NetBeans上创建一个Java项目并添加jar文件(Test1.jar),然后调用类库函数。

 package test2;

 import Demo1_Lib.Test1;

 /**
 *
    * @author tveluppillai
 */

  public class Test2 
  {

   /**
    * @param args the command line arguments
    */
    public static void main(String args[]) 
   {
     Test1 obj = new Test1();
     obj.print();       
    }

 } 

这段代码在NetBeans中编译和运行正常,输出结果正确。

但是,当我使用命令提示符执行同样的操作时,出现了错误。

我使用下面的命令进行编译和运行。

javac -cp C:\\Demo_Lib\\Test\\Test1.jar Test2.java

我收到了以下错误信息:

类文件版本为52.0,应该是50.0。请删除或确保它出现在类路径的正确子目录中。import Demo1_Lib.Test1; ^

请问我漏掉了什么?

当我将正确的版本更改为JDK 1.8后,我遇到了以下错误:包Demo1_Lib不存在。 - Teva Velu
请查看此链接:http://stackoverflow.com/questions/20642382/package-does-not-exists-java。我是如何找到它的?在stackoverflow上搜索“java package does not exist”... - ericbn
尽管这个问题被标记为重复,但它并不完全是一个重复的问题,因为参考的问题是针对特定IDE的,而这个问题更为通用。 此外,这里接受的答案解释得更好!
“尝试使用JRE/JDK1.6运行/引用使用JDK 8编译的类”
- prash
2个回答

7
你正在尝试使用JRE/JDK 6运行/引用使用JDK 8编译的类。
命令行中使用的Java版本可能与NetBeans使用的版本不同。
请参阅Java类文件以获取数字含义列表。
下载JDK8,或者如果您已经拥有它,请将其添加到路径并设置JAVA_HOME。
在Unix中:
export JAVA_HOME=directory
export PATH=$PATH:$JAVA_HOME/bin

我成功编译了代码。 - Teva Velu
好的 - 但这实际上是一个重复的问题。如果您将错误消息复制并粘贴到Google中,您将得到答案 - class-file-has-wrong-version-52-0-should-be-50-0 - rghome
你如何设置JAVA_HOME?并将其添加到路径中? - Felix Doe

1
在我将JDK8更改为JAVA_HOME后,我能够以以下方式编译并运行代码...
编译:
     javac -cp C:\\Demo_Lib\\Test\\Test1.jar Test2.java

运行:

     javac -cp C:\\Demo_Lib\\Test\\Test1.jar;**.** Test2.java

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接