簡體   English   中英

即使設置了類路徑,javac 仍報告“包不存在”

[英]javac reports "package does not exist" even though classpath is set

我有一個文件Test.java (為了調試而刪除):

import com.github.tkutche1.jgrade.Grade;

我嘗試用這個命令行編譯它並得到一個錯誤:

# javac -cp lib/com/github/tkutche1/jgrade/Grade.class:. Test.java
Test.java:1: error: package com.github.tkutche1.jgrade does not exist
import com.github.tkutche1.jgrade.Grade;
                                 ^
1 error

package確實存在,如圖:

# javap lib/com/github/tkutche1/jgrade/Grade.class

Compiled from "Grade.java"
public interface com.github.tkutche1.jgrade.Grade extends java.lang.annotation.Annotation {
}

以下是使用verbose命令行選項 [添加換行符] 時發生的情況:

# javac -verbose -cp lib/com/github/tkutche1/jgrade/Grade.class:. Test.java
[parsing started RegularFileObject[Test.java]]
[parsing completed 15ms]
[search path for source files: lib/com/github/tkutche1/jgrade/Grade.class,.]
[search path for class files: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar,
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar,
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar, /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/classes,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar,
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jaccess.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunpkcs11.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunjce_provider.jar, 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/localedata.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/icedtea-sound.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/dnsns.jar,
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/zipfs.jar,/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/cldrdata.jar, /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunec.jar,
lib/com/github/tkutche1/jgrade/Grade.class,.]
Test.java:2: error: package com.github.tkutche1.jgrade does not exist
import com.github.tkutche1.jgrade.Grade;
                                 ^
[total 111ms]
1 error

我在 Ubuntu 上使用 javac 1.8.0_352。(我正在嘗試創建一個 Gradescope 自動分級器。)

我已經閱讀了許多類似問題的答案,這些問題說要在類路徑中包含.class文件(或.jar文件),我已經這樣做了。 沒有一道題有javap的output顯示package存在於指定的class中。

我究竟做錯了什么?

Java 類路徑中的有效條目是:

  1. 目錄包含已編譯的 package 樹...其名稱與 package 名稱結構相匹配
  2. 個人JAR個文件
  3. JAR 文件通配符

不屬於上述內容的條目將被忽略。

您已將一個單獨的.class文件放在類路徑中。 它將被忽略。

假設“lib”是一個包含“com/github/tkutche1/jgrade/Grade.class”的目錄,你的類路徑應該是:

$ javac -cp lib:. ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM