我正在尝试使用Notepad++作为我的多功能工具编辑、运行、编译等。
我安装了JRE,并将路径变量设置为/bin目录。
当我在Notepad++中运行“Hello world”时,我收到以下消息:
java.lang.UnsupportedClassVersionError: test_hello_world :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
.........................................
我认为这里的问题在于版本;Java的某些版本可能是旧的或太新的。
如何修复?我应该安装JDK,并将路径变量设置为JDK而不是JRE吗?JRE或JDK中的PATH变量有什么区别?
今天,这个错误消息出现在Ubuntu 12.04.2 LTS(Precise Pangolin)上的Tomcat 7中:
/var/log/tomcat7/localhost.2014-04-08.日志:2014年4月8日上午9:00:55 org.apache.catalina.core.StandardContext过滤器开始严重:启动筛选器支柱2时出现异常java.lang.UnsupportdClassVersionError:controller/ReqAccept:不支持的major.minor版本51.0(无法加载类控制器.ReqAccept)
Struts应用程序是用Java7编译的。
结果是,有人使用“service tomcat[stop/start]”重新启动tomcat 7,
$ps-ef|grep javatomcat7 31783 1 32 20:13?00:00:03/usr/lib/jvm/defaultjava/bin/java。。。$/usr/lib/jvm/defaultjava/bin/java-版本java版本“1.6.0_27”
这会导致“不支持的major.minor版本51.0”错误。
当我们使用“/etc/init.d/tomcat7[stop/start]”重新启动Tomcat 7时,问题得到了解决。
$ps-ef|grep javatomcat7 31886 1 80 20:24?00:00:10/usr/local/java/jdk1.7.0_15/bin/java$/usr/local/java/jdk1.7.0_15/bin/java-版本java版本“1.7.0_15”
我在Mac上也遇到过类似的情况,以下过程对我有效:
在终端中,键入
vi ~/.profile
然后在文件中添加此行,并保存
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
其中版本是计算机上的版本,例如1.7.0_25。
退出编辑器,然后键入以下命令使其生效
source ~/.profile
然后键入java-version以检查结果
java -version
什么是.profile文件?
.profile文件是隐藏文件。这是一个可选文件,告诉系统当其配置文件所在的用户登录时要运行哪些命令。例如,如果我的用户名是bruno,并且/Users/bruno/中有一个.profile文件,则其所有内容都将在登录过程中执行。
资料来源:http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515
显示的版本号描述了类文件兼容的JRE版本。
报告的主要数字如下:
Java SE 19 = 63,
Java SE 18 = 62,
Java SE 17 = 61,
Java SE 16 = 60,
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
(来源:维基百科)
要解决实际问题,您应该尝试使用较新版本的Java JRE运行Java代码,或者向Java编译器指定目标参数,以指示编译器创建与早期Java版本兼容的代码。
例如,为了生成与Java 1.4兼容的类文件,请使用以下命令行:
javac -target 1.4 HelloWorld.java
使用较新版本的Java编译器,您可能会收到关于未设置引导类路径的警告。有关此错误的更多信息,请参阅博客文章New-javac警告,该警告用于设置没有bootclasspath的旧源。