我是 java 和包的新手,需要一些帮助来导航它们。目前,我有一个用于 Web 应用程序的正常运行的 java 程序,其中我的所有 .java 和 .class 文件都位于myapp/WEB-INF/classes
linux 服务器上的目录中:
myapp/WEB-INF/classes/MyJavaClass1.class
myapp/WEB-INF/classes/MyJavaClass2.class
myapp/WEB-INF/classes/MyJavaClass3.class
这些文件都没有包含一行代码,package
所以我假设正在使用系统默认包。
然后我添加了一个mytools
目录,并在其中创建了一个新类。
myapp/WEB-INF/classes/mytools/MyToolClass1.class
但似乎这个新类无法访问myapp/WEB-INF/classes
目录中的类,除非这些 java 文件包含包名。所以我的问题是如何将文件从系统默认包(例如未指定包)更改为命名包?
我应该追加package mypackage;
到 MyJavaClass1.java、MyJavaClass2.java 和 MyJavaClass3.java 的第一行,然后追加package mypackage.mytools;
到 MyToolClass1.java?
或者,在执行上述操作之前,我是否还需要创建一个目录并将 MyJavaClass1.class 等文件放在其中mypackage
?myapp/WEB-INF/classes/mypackage
那么当我编译 .java 文件时,我是在它们自己的目录中编译每个文件(还是所有文件都需要从顶级目录编译)?
更新 1
如果我只是保留 java 文件的默认包(即没有包)myapp/WEB-INF/classes
,并附加:
package mytools;
import MyJavaClass1;
到 MyToolClass1.java 并尝试从mytools
目录编译 MyToolClass1.java,我得到以下编译错误:
MyToolClass1.java:21: '.' expected
import MyJavaClass1;
^
MyToolClass1.java:21: ';' expected
import MyJavaClass1;
^
2 errors