我只是对某事感到好奇。假设我有以下环境:
文件夹结构-
projects \ prj1 \ src \ pkgs \ main (contains Main.java)
\ test (contains TestClass.java)
主.java-
package pkgs.main;
import pkgs.test.TestClass;
class Main {
public static void main(String[] args) {
TestClass tc;
}
}
基于 Java shell 的编译命令 -
javac -d ..\cls -sourcepath ..\src ..\src\pkgs\main\Main.java
java -classpath ..\cls pkgs.main.Main
如果我然后创建一个名为 Default.java 的 .java 代码文件,它没有包语句 -
public class Default {}
并且把这个文件放在src文件夹下,Main.java这样的类文件怎么访问这个Default类呢?我尝试使用以下导入语句,但都不起作用,导致编译错误:
主.java-
package pkgs.main;
// import Default; (causes many compilation error messages)
// import .Default; (causes "identifier expected" compilation error)
我还将 Default.java 文件从 src 文件夹移动到包含 Main.java 的同一文件夹中,但这也不起作用。我很欣赏整个想法似乎是糟糕的设计,但我这样做只是为了更多地了解包和导入语句的工作方式以及项目文件夹结构。谢谢。
最佳答案
为了避免间接的两个步骤,接受的答案的本质是 according to the specification :
It is a compile time error to import a type from the unnamed package.
这意味着如果您不在未命名(又名默认)包中,则无法访问未命名/默认包中的类,unless you are prepared to turn to reflection .
然而,如果你在未命名/默认包中,你不需要导入任何东西,只是不要忘记设置类路径,例如javac -cp "."ABC.java
关于java - 如何访问其.java 文件没有包语句的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494084/