编译 Servlet 代码

引子:把网上一个项目中的 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值