我写了一个 java 代码并编译了它。 (foo1.6.class) 根据我的搜索,我的本地机器有 Java 1.6,而我上传的 foo1.6.class 的 tomcat 服务器只接受版本号 1.5 这意味着我必须有 Java 1.5 才能编译?
我相信这是引发错误版本号错误的原因,如下所示。
我的问题是,有什么方法可以使用 1.5 版本号编译我的 Java 文件吗? 查看了 javac cmd 但似乎它不是选项的一部分。但我不认为出于这个原因删除 1.6 并安装 Java 1.5 也不是很好的选择。人们如何处理这种情况?
提前致谢!
exception
javax.servlet.ServletException: Bad version number in .class file (unable to load class resume_builder.ResumeBuilder)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:273)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class resume_builder.ResumeBuilder)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1884)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:889)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1353)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
java.lang.Class.getConstructor0(Class.java:2671)
java.lang.Class.newInstance0(Class.java:321)
java.lang.Class.newInstance(Class.java:303)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:142)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
最佳答案
您可以使用javac -target 1.5 -source 1.5
。
Java 编译器允许您使用低于当前目标版本号的版本,前提是您还使用不高于目标的源兼容版本(低于 1.4 的源版本有异常(exception))。
关于java - 编译文件时是否可以选择版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3207537/