我需要在项目中导入Java类。我需要导入的类是在一个JAR文件中
绝对路径~/Documents/mylib/stdlib.jar
现在在我的源文件(Test.java)中我正在使用
import stdlib.*;
我正在编译
javac -classpath ~/Documents/mylib/stdlib.jar Test.java
它显示stdlib不存在的错误。
我的import语句是否正确或类路径有什么问题? 这个import语句不应该导入JAR文件中的所有类吗?
我没有使用任何IDE,我的操作系统是Linux。
答案 0 :(得分:3)
import语句从jar文件导入类,而不是jar文件本身。
表单的导入声明:
import stdlib.*;
将导入包 stdlib中的所有类。
Oracle提供this tutorial on import。
编辑:您似乎正在使用An introduction to programming in Java的stdlib.jar。此jar文件中的类没有包。您不需要在默认包中导入类,因为您的类也在默认包中。
答案 1 :(得分:0)
它将立即导入“stdlib”包下的所有类,但子包中没有任何内容。您需要导入包和类;我们可以在jar里面看到你的包名称假设是否正确。
类路径本身很好。
更新了评论中的信息。
您说您正在尝试导入默认包中的类。从默认包导入类型是语法错误。有关详细信息,请参阅JLS Section 7.5。
从未命名的包导入类型是编译时错误。
如果您必须访问此课程,则需要使用反射。
但是将它放在命名包中要容易得多。
答案 2 :(得分:0)
使用$HOME
代替~
。
$ HOME扩展,〜不是。
答案 3 :(得分:0)
检查StdOut.java
是否有声明package stdout;
。
或者它只是位于stdout.jar
的顶级文件夹中?