大数据平台技术笔记

1. 升级Eclipse之后,ant脚本执行无输出

2022-04-13  本文已影响0人  OkGogogooo

1. 问题描述

Eclipse中的java工程是用ant脚本导出,升级eclipse之后,执行导出脚本无输出,控制台亦无日志输出。

2.解决办法

在ant上右键,选择"debug as"-->“ant build...”,打开调试配置对话框,如下图:


image.png

在“Main”面板的“Arguments”面板中输入以下内容:

-logger org.apache.tools.ant.NoBannerLogger

然后点击“apply”,“debug”调试执行。此时在控制台输出如下异常:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/ant/internal/launching/remote/InternalAntRunner has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

从中可以看出,是class文件的编译版本太高,而运行这个class的jdk版本太低,所以ant执行需要绑定更高版本的jkd或jre。
因在开发过程中使用的是jdk8,而eclipse_202203中的有些Jar已经是基于jdk17编译运行了,eclipse内置了jre17,所以只需要选择这个jre执行就可以。在调试配置对话框的“jre”标签页,选择工作空间自带的Jre17即可。如下图:


image.png

如果不知道eclipse自带的jre目录,且在eclipse目录下通过搜索也未找到,可以通过运行jvisualvm查看,知道eclipse内置jre位置,如下图:


image.png
上一篇下一篇

猜你喜欢

热点阅读