java -cp或者java -classpath的使用

现在有一个java类叫做TestDefault.java,代码如下:

public class TestDefault {
 public static void main(String[] args) throws Exception{
	 System.out.println("abc");
  }
}

如果让我们使用javac编译,然后再使用java命令执行的话,应该都没有问题:

image.png

但是现在有这样一个简单的类Test.java:

package app.junit;
import java.io.File;
import org.apache.commons.io.FileUtils;
public class Test {
 public static void main(String[] args) throws Exception{
	 String cont = FileUtils.readFileToString(new File("d:\\home\\a.html"));
	 System.out.println(cont);
  }
}

可以看到这个类和TestDefault.java的不同之处在于,Test.java引用了commons-io-2.4.jar里面的类FileUtils,那么我们javac编译和java运行编译后的class文件的时候,需要指定类路径,不然那就会报找不到类的异常。

已知Test.java的路径如下,即D:\workspace2\lzzcms\src\app\junit\Test.java:

image.png

一、javac编译

那么首先,我来编译这个引用了其他jar包的类,在java类所在目录D:\workspace2\lzzcms\src\app\junit\使用命令javac -d . -cp D:\workspace2\lzzcms\web\WEB-INF\lib\commons-io-2.4.jar ./Test.java:

image.png

命令解释:-d :用于指定放置生成的class文件的位置,这里我指定了".",表示当前目录,可以看到执行完之后在当前目录下生成了app目录,app目录下还有junit目录,junit目录下才是生成的class文件Test.class,如下图这样:

image.png

这里生成的app和junit目录是基于Test.java的package来创建的。

-cp:指定需要依赖的类的路径

./Test.java:指定了要编译的java文件的路径,可以是相对路径也可以是绝对路径

二、java命令执行生成的class文件

在java类所在目录D:\workspace2\lzzcms\src\app\junit\使用命令java -cp D:\workspace2\lzzcms\web\WEB-INF\lib\commons-io-2.4.jar;.  app.junit.Test即可:

image.png

可以看到正确输出了a.html的内容(内容就是a.html)。

解释与注意:

        1.这里的cp后边的类路径多了一个";.",表示寻找class文件的时候还要从当前目录下寻找

        2.app.junit.Test:通过包全名指定要执行的class

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值