前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译 Servlet 代码

编译 Servlet 代码

作者头像
Fisherman渔夫
发布2020-03-18 20:04:27
5400
发布2020-03-18 20:04:27
举报
文章被收录于专栏:渔夫渔夫

引子:把网上一个项目中的 Servlet 代码下载的本地后,出现了入下的错误:java.lang.UnsupportedClassVersionError,含义是高版本的 JDK 编译的 Java class 文件试图在较低版本的 JVM 上运行导致的错误。

既然如此,就需要重新编译一遍相关 Java 文件了。

首先 javac 命名 JDK 提供的编译软件,对于此命令,所需的 option 如下:

  • -encoding:指定 Java 源代码的编码方式,虽然都 2020 了基本上都是 UTF-8 编码的,其是默认的,一般不用设置,但是我下载的版本恰为 GBK,所以需要此 option;
  • -sourcepath:指定 Java 源文件的目录位置,如果命令行的当前目录即为源代码所在位置,那么可以需要此命令;
  • -d:由于 WebApp 项目中源代码和字节码是分目录存放的,所以需要将源代码编译至指定目录中;
  • -cp-classpath:由于 Servlet 类都继承于 javax.servlet 等类,所以只要引入这些类,才能正确编译。

我的源代码目录为: /Library/Tomcat/webapps/helloapp/src/mypack 指定的编译目录为: /Library/Tomcat/webapps/helloapp/WEB-INF/classes/mypack 然后第三类库位于 Tomcat 中,目录为: /Library/Tomcat/lib

所以最终的编译命令为: javac -encoding GBK -sourcepath /Library/Tomcat/webapps/helloapp/src/mypack/*.java -cp /Library/Tomcat/lib/servlet-api.jar -d /Library/Tomcat/webapps/helloapp/WEB-INF/classes

注意,-cp option 一般需要写出所需的 jar 包,如果不想写出,可以替换为 -Djava.ext.dirs option 来指定第三方架包所在目录。

javac -encoding GBK -sourcepath /Library/Tomcat/webapps/helloapp/src/mypack/*.java -Djava.ext.dirs=/Library/Tomcat/lib -d /Library/Tomcat/webapps/helloapp/WEB-INF/classes

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档