编译 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)。

完成这些更改后,它终于奏效了。