当前位置: 首页 > 知识库问答 >
问题:

不支持的major.minor版本51.0 Eclipse在尝试引用Jar文件时出错

公冶同
2023-03-14

我正在编译一个针对java版本6的jar文件,但是我遇到了一个与不支持的专业相关的错误。次要版本51.0。在阅读了几篇文章之后,比如如何修复java。lang.UnsupportedClassVersionError:不支持的专业。次要版本我无法解决我的问题,并采取极端措施试图隔离问题,如下所述。

我创建了一个java沙盒项目,其目的是测试Xerces For Android jar,这是我从源代码制作的,目标是版本6。如果我将源代码直接放入项目中,我就能够成功地编译和运行我的测试程序。然而,如果我创建了一个jar文件,然后将其添加到构建路径中,我会得到不受支持的主文件。次要版本51.0。

读了几篇文章,不支持的专业。minor 51.0版似乎是基于不同java版本的编译问题。51.0版看起来是java 7。为了简化测试,我从我的机器上卸载了所有Java 7安装,确保我的eclipse项目指向相同的Java 6 JRE,并且我的Java\u主页设置为Java 6u45。我还重新启动了eclipse,以确保我的更改到位。

我正在使用Ant创建jar文件。代码非常简单,我甚至将javac目标指定为1.6。

<project name="XercesForAndroid" default="dist" basedir=".">
    <description>
        Builds jar for Xerces-For-Android
    </description>
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="build"/>
  <property name="dist"  location="dist"/>

  <target name="init">
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
  </target>

  <target name="compile" depends="init" description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac target="1.6" srcdir="${src}" destdir="${build}"/>
  </target>

  <target name="dist" depends="compile"
        description="generate the distribution" >
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>

    <!-- Put everything in ${build} into the .jar file -->
    <jar jarfile="${dist}/lib/Xerces-For-Android.jar" basedir="${build}"/>
  </target>

  <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
  </target>
</project>

运行ant脚本后,我检查了带有7-zip的罐子,发现清单显示使用了6u45来制作它。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)

关于我可能缺少什么的想法吗?我不知道如何Java7可以再被引用,但它似乎是基于51.0的引用...

其他几个旁注:

  1. 我手动删除了。jar文件,并对Xerces For Android项目进行了清理,以确保没有旧的二进制文件
  2. 我还对我的沙盒项目进行了清理,以测试jar文件的使用。同样的问题
  3. 卸载Java 7后,我重新安装了Java 6u45。仍然无法通过51.0参考
  4. 根据Joop Eggen的请求,我在eclipse中验证了编译器设置:

解决方案

根据Joop Eggen的请求,我以verbose模式运行ant脚本(ant-verbose


共有3个答案

宗政博文
2023-03-14

如果您使用maven构建项目,请参见下面的内容。确保相应地指定源和目标。当我在1.7中编译时(保留了1.7),发现在amazon beanstalk上是1.6,出现了这个错误

<build>
<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
</plugins>
</build>
戚弘和
2023-03-14

禁用eclipse中的自动编译,或者更好地从命令行运行ant。并执行

Javac还具有编译器和源代码属性。

可能是偏执狂,检查一下。类文件,有关代码,请参阅dumpJavaClassVersion。

范京
2023-03-14

构建之前,请确保对所有内容进行全面清理。主要的。Jar中的类会发生次要的事情,而不一定是jar本身。

浏览并删除您可以找到的任何. class文件,并从头开始重新编译。

 类似资料:
  • GP是我从这里下载的文件。当我试图运行它时,我收到以下错误: 我该怎么处理?我应该删除JRE并安装较新或较旧的版本吗?

  • 我已经下载了程序: 解压缩它: 进入文件夹并运行: 这是我得到的错误: 我这样做过: 但是同样的错误 我的java版本: javac1.6。0_35 Java版本"1.6.0_35"OpenJDK运行时环境(IcedTea6 1.13.7) (6b35-1.13.7-1~Deb7u1)OpenJDK 64位服务器VM(build 23.25-b01,混合模式) 我读到这篇文章是因为我编译的版本比J

  • 错误:(1,0)原因:com/android/build/gradle/libraryplugin:不受支持的Major.minor版本52.0 存档中 MyPath\AndroidStudioProjects\MyApp\App\libs\ColorPickerPreference\ColorPickerPreference\build.grad 和java版本 java版本“1.7.0_79”

  • 我的pom.xml: 似乎所有的设置都是正确的,我指的是在pom和服务器上的java版本。

  • 当我试图编译我的GWT应用程序时,我得到的异常值低于异常值。知道吗?提前道谢。

  • 我试图按照Kafka网站https://kafka.apache.org/quickstart上的指南操作,但当我使用kafka2.12-2.5.0并尝试启动zookeeper时,我得到了: 我用的是Redhat7.1。尝试更新Java: 我应该有什么版本的Java?