如何在用 javac 编译时指定多个类路径

笔者最近在学习Java的过程中,遇到了需要通过 javac -cp 来指定类路径的情景,并且要指定的类路径不止一个,笔者在此写下自己的解决方法。

众所周知,编译一个.java文件的时候,编译器会在指定的类路径中(或类路径们中)寻找需要的类。这个类路径可以理解为一个根目录,而其下便是.class文件们的目录结构。

为了方便解说,我在vscode中创建了这样一个目录结构:

3ee31a8d3a6e951b4f441d3d1ce4ee58.png

Untitled作为根目录,其下有两个文件夹:hello和lib,其中hello放着我们自己写的Hello.java:

75c4ef16bcf7f35ac6aba9d07957c510.png

lib下是servlet-api.jar(这是我从tomcat根目录下的lib目录中复制过来的)

e6b901d256b1b262c0bc87263b1f1da6.png

而我们又写了个World.java,简单地放置在Untitled下:

5db6b0e56c0ff86c5c3325f865ed0f1b.png

可以看到,World类中,用到三个包,hello和javax.servlet还有javax.servlet.http,而后面两个我们要从servlet-api.jar中获得。


那么接下来,我们就来编译World.java文件吧 !

  1. 首先,编译Hello.java:
1c9fb94b75fcb7d005858fca761e4c02.gif
  1. 然后,可以编译World.java了:
988074f5438fd0ba81c179e0c6345376.gif
69ed56ccc1fc2ab78dc2a0d0d5ee3c4f.png

“” 将路径包含起来,用 ; 将不同的路径彼此分开,. 表示的是当前目录(在本文中指的是Untitled)

碰到一个不认识的类,compiler会先在第一个路径中搜寻,如果没有,则在第二个中搜寻,如果没有……


笔者在google 解决方法时,看到很多方法都只强调路径之间用;隔开,却没有人说要用”” 将路径括起来,而在笔者的PC(笔者用的是Windows 10)上,如果不加”” 则会报错。因而如果按照本文做法无法完成编译的同学,可以试试把”” 去掉。


版权声明:本文为weixin_29267307原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_29267307/article/details/112575050