在/home/wangming
目录下,我写了一个简单的java源码Test.java
import com.alibaba.fastjson.JSONObject;
import java.util.concurrent.TimeUnit;
public class Test {
public static void main(String[] args) throws InterruptedException {
JSONObject json = new JSONObject();
TimeUnit.HOURS.sleep(1);
}
}
我将fastjson-1.2.11.jar
放入目录(类路径)中,然后执行
[root@root wangming]# javac -cp ./* Test.java
javac: invalid flag: ./Test.class
Usage: javac <options> <source files>
use -help for a list of possible options
[root@root wangming]# javac -cp . Test.java
Test.java:2: error: package com.alibaba.fastjson does not exist
import com.alibaba.fastjson.JSONObject;
^
Test.java:9: error: cannot find symbol
JSONObject json = new JSONObject();
^
symbol: class JSONObject
location: class Test
Test.java:9: error: cannot find symbol
JSONObject json = new JSONObject();
^
symbol: class JSONObject
location: class Test
3 errors
[root@root wangming]# javac -cp .:./ Test.java
Test.java:2: error: package com.alibaba.fastjson does not exist
import com.alibaba.fastjson.JSONObject;
^
Test.java:9: error: cannot find symbol
JSONObject json = new JSONObject();
^
symbol: class JSONObject
location: class Test
Test.java:9: error: cannot find symbol
JSONObject json = new JSONObject();
^
symbol: class JSONObject
location: class Test
3 errors
[root@root wangming]# javac -cp .:./* Test.java
只有javac -cp .:./* Test.java
执行成功,为什么???
最佳答案
问题是 Unix/Linux shell 将 ./* 扩展为任何匹配的内容,例如 ./Test.java
做你该做的事:
javac -cp .:./* Test.java
禁用 shell 匹配,并且 shell 不再解释通配符 => 它可以工作。
这意味着这也可以工作:
javac -cp "./*" Test.java
注意:在 Windows 端没有问题,Windows shell 不会像 Linux/Un*x 那样扩展通配符。
关于java - ./* 和 ./* 之间有什么区别? :./* 在 java 类路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39144926/