编译 JSP 类 - java 和 tomcat 之间的错误工作流程
Compile JSP classes - A workflow of errors between java and tomcat
我在 eclipse 中做了一个 JSP webpage/app。由于我遇到了一些问题,我想改变,所以我将我的文件(*.java 和 *.jsp)备份到另一个文件夹并忘记了 eclipse.
Builds in eclipse: OK
现在,要在不使用 eclipse 的情况下编译我的代码,我会这样做:
javac -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
javac -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/Setup.java
javac -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/ ./src/tfg/lti/UI/Painter.java
Builds with my code: OK
但是,如果我尝试在 Web 浏览器上打开我的应用程序,我会从 Tomcat:
Estado HTTP 500 -
type Informe de Excepción
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: tfg/lti/UI/Painter : Unsupported major.minor version 51.0 (no puedo cargar clase tfg.lti.UI.Painter)
翻译西班牙语部分:
Status HTTP 500 -
type exception report
message
description The server found an internal error () that made it couldn't fill this requeriment
exception
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: tfg/lti/UI/Painter : Unsupported major.minor version 51.0 (can not load the class tfg.lti.UI.Painter)
然后,基于 How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version,我尝试通过改变目标来构建它,像这样(对所有文件):
javac -target 1.5 -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
Notice: the target version was choosen just to try, didn't know what value should be correct
问题一:由于之前是用eclipse搭建的,不知道之前用的是哪个target,不过我想应该是用的最后一个(1.7)。现在我不明白为什么不是。我猜项目设置?
然后,再次构建时,出现下一个错误:
javac: target release 1.5 conflicts with default source release 1.7
所以现在,在 Topic, see last answer please 的基础上,javac 添加了一个 -source 1.5
,类似于:
javac -source 1.5 -target 1.5 -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
但是后来,我得到了最后一个错误:
warning: [options] bootstrap class path not set in conjunction with -source 1.5
1 warning
最后,根据 bootstrap class path not set in conjunction with -source 1.6 3 和 "learned",如果我确定我没有使用新 SDK 中的任何内容,我可以忽略此警告。
因为我不是,所以我不想忽略它,但仍然不知道 eclipse 是如何构建我的项目的,我应该如何构建它才能运行 它再次出现在我的 tomcat 服务器上。
一些数据:
Tomcat server: version 6
Java JDK: 1.75
java -version output:
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) Server VM (build 24.75-b04, mixed mode)
终于解决了。正如 SMA 告诉我的那样,我用 JDK 7 构建它,运行 用 JDK6 构建它。但我不知道它是如何工作的,所以我不得不寻找它。
首先,我设法用 Unsupported major.minor version 51.0 注意到了这一点。但是,如您所见,他们使用旧版本进行编译,但我使用旧版本执行它。
然后,在Change the JDK used by Tomcat的基础上,我修改了JAVA_HOME(/etc/default/tomcat6
文件中甚至没有设置)为JDK7。为此,我在文件中添加:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
然后重新启动tomcat(6)。
完成这些更改后,它终于奏效了。
我在 eclipse 中做了一个 JSP webpage/app。由于我遇到了一些问题,我想改变,所以我将我的文件(*.java 和 *.jsp)备份到另一个文件夹并忘记了 eclipse.
Builds in eclipse: OK
现在,要在不使用 eclipse 的情况下编译我的代码,我会这样做:
javac -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
javac -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/Setup.java
javac -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/ ./src/tfg/lti/UI/Painter.java
Builds with my code: OK
但是,如果我尝试在 Web 浏览器上打开我的应用程序,我会从 Tomcat:
Estado HTTP 500 -
type Informe de Excepción
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: tfg/lti/UI/Painter : Unsupported major.minor version 51.0 (no puedo cargar clase tfg.lti.UI.Painter)
翻译西班牙语部分:
Status HTTP 500 -
type exception report
message
description The server found an internal error () that made it couldn't fill this requeriment
exception
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: tfg/lti/UI/Painter : Unsupported major.minor version 51.0 (can not load the class tfg.lti.UI.Painter)
然后,基于 How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version,我尝试通过改变目标来构建它,像这样(对所有文件):
javac -target 1.5 -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
Notice: the target version was choosen just to try, didn't know what value should be correct
问题一:由于之前是用eclipse搭建的,不知道之前用的是哪个target,不过我想应该是用的最后一个(1.7)。现在我不明白为什么不是。我猜项目设置?
然后,再次构建时,出现下一个错误:
javac: target release 1.5 conflicts with default source release 1.7
所以现在,在 Topic, see last answer please 的基础上,javac 添加了一个 -source 1.5
,类似于:
javac -source 1.5 -target 1.5 -d ./Server/WEB-INF/classes/ ./src/tfg/lti/Config/TextFileWorker.java
但是后来,我得到了最后一个错误:
warning: [options] bootstrap class path not set in conjunction with -source 1.5
1 warning
最后,根据 bootstrap class path not set in conjunction with -source 1.6 3 和 "learned",如果我确定我没有使用新 SDK 中的任何内容,我可以忽略此警告。
因为我不是,所以我不想忽略它,但仍然不知道 eclipse 是如何构建我的项目的,我应该如何构建它才能运行 它再次出现在我的 tomcat 服务器上。
一些数据:
Tomcat server: version 6
Java JDK: 1.75
java -version output:
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) Server VM (build 24.75-b04, mixed mode)
终于解决了。正如 SMA 告诉我的那样,我用 JDK 7 构建它,运行 用 JDK6 构建它。但我不知道它是如何工作的,所以我不得不寻找它。
首先,我设法用 Unsupported major.minor version 51.0 注意到了这一点。但是,如您所见,他们使用旧版本进行编译,但我使用旧版本执行它。
然后,在Change the JDK used by Tomcat的基础上,我修改了JAVA_HOME(/etc/default/tomcat6
文件中甚至没有设置)为JDK7。为此,我在文件中添加:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
然后重新启动tomcat(6)。
完成这些更改后,它终于奏效了。