java - ./* 和 ./* 之间有什么区别? :./* 在 java 类路径中

标签 java

/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/

相关文章:

java - do...while() 使用 Java 8 流?

java - 如何向属性文件(Eclipse)中的一个键添加多个值?

java - UniversalConnectionPoolManagerMBean 在应用程序 "re"启动后已经存在

java - 为什么我的 Java 应用程序看不到 *.jrxml?

java - 如何定义小键盘的 keyStroke - Enter 键

java - 如何检查两个集合是否相等,忽略大小写?

java - Spring/JSP 和 Servlet - 高级访问控制

java - 如何创建该类的对象?

java - 关于正确关闭/提交数据库事务和执行查询的问题

java - 使用 SelectionMode.MULTI 将行添加/创建点击事件到 Vaadin 网格?