我有一个叫做"MyTools"的罐子.jar位于c:\ data文件夹中.我在名为"UseTools.java"的同一文件夹中创建了一个新文件.现在我想在UseTools.java中使用MyTools.jar中的一些类.我试过这个,但它似乎没有工作:
import MyTools.*;
public class UseTools
{
public static void main(String[] args)
{
MyTools.SomeClass foo = new SomeClass();
SomeClass.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试用以下方法编译:
javac -cp . UseTools.java
Run Code Online (Sandbox Code Playgroud)
并收到此错误消息:
UseTools.java:1: package MyTools does not exist
import MyTools.*;
^
UseTools.java:7: package MyTools does not exist
MyTools.SomeClass foo = new SomeClass()
^
2 errors
Run Code Online (Sandbox Code Playgroud)
我没有在任何类中设置包名.
我是否必须在jar类中设置包名?
提一下与问题标题更相关的内容:在 Java 中,您无法从命名包中的代码访问默认包中的类。
这意味着,如果 jar 文件中的类不明确属于任何包,并且在 jar 中,您的文件直接位于没有子文件夹的根文件夹中,则它们位于默认包中。这不是很详细,缺乏模块化和可扩展性,但技术上没问题。然后,您只能使用默认包中的代码中的这些类。但这并不一定意味着它必须在同一个罐子里。如果您有多个 src 或 class 文件夹,它们都可以包含可以交互的默认包中的类。JAR 文件中的组织和项目中的包结构相互独立。
但是,我强烈建议您使用明确的包信息。
您需要添加 -cp file.jar 而不是 -cp 。
后一个将仅拾取 .class 文件。顺便说一句:为什么不使用像 netbeans、eclipse 或 intelliJ 这样的 IDE?
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |