如何使用.jar库编译Java程序
我不能让javac识别外部.jar文件,我试图扩展其类。 我在同一目录中有两个文件:TestConsole.java和acm.jar。 我正在使用以下命令从同一目录编译:
javac -classpath .:acm.jar TestConsole.java
但似乎javac只是忽略了acm.jar。 它给了我错误:
TestConsole.java:1: package acm does not exist import acm.program; ^
当然,acm.program是acm.jar中的一个包。 acm.jar中的所有类都已编译; 我只想在我的课程中使用它们,而不是编译它们。
我究竟做错了什么?
我在Mac上运行它,并且acm.jar的目录结构似乎是有效的:它包含一个acm/program
目录,它有ConsoleProgram.class
,这是TestConsole
扩展的唯一类。
javac -classpath ".:acm.jar" TestConsole.java
也不起作用。
清单:
-
您在acm.jar中的类显示为:
ACM /程序/ CLASSX.class
ACM /程序/ CLASSY.class
用jar tf acm.jar滗去
-
你导入它们像:
import acm.program.CLASSX;
要么
import acm.program。*;
javac -cp ;
如果在同一个目录中,只有jar的名称可以,如果不是,则指定完整路径或相对路径
如果不止一个jar子,分开,
替换;
with :
on unix
如果可能,请使用Eclipse之类的IDE。 我曾经花了很多时间在类似的事情上,但在工业界,你几乎不会以这种方式做到这一点。
您是否在Windows计算机上运行这些命令? 在Windows上,类路径的元素由分号分隔,而不是冒号。 所以:
javac -classpath .;acm.jar TestConsole.java
另一种可能性: acm.jar
的结构是错误的。 内部的类文件是从声明package acm.program
文件编译的还package acm.program
– 包结构也必须表示为目录层次结构,因此acm.jar
必须包含目录acm
,并且在其中包含一个包含该目录的子目录program
TestConsole
使用的类的实际类文件。
无论是谁在努力编译并且仍然遇到问题,因为我挣扎了好几个小时,我正在关注上面的所有答案仍然因为一个小问题而无法运行程序。
没问题的是每个包装后的半冒号。 我不确定Mac或Linux,但对于Windows命令提示符,情况就是如此
javac -cp mysql-connector-java-8.0.12.jar; Testing.java
java -cp mysql-connector-java-8.0.12.jar; Testing
应该遵循案例编译或运行。
我只是为成功编译后仍在寻找相同问题答案的人们添加。
编译时使用@Michael Borgwardt建议的命令:
javac -classpath .;acm.jar TestConsole.java
为了执行,您还需要指定类路径:
java -classpath .;acm.jar TestConsole
- Quartz调度程序 – 之间的时间
- 如何从Eclipse java项目中删除Maven?
- Java – 连接关闭后无法使用ResultSet
- 如何正确使用“PBEWithHmacSHA512AndAES_256”算法?
- 当请求来自Web服务器而不是Web浏览器时,HTTPSession的创建如何工作?
- Spring 3 – 为NoSuchRequestHandlingMethodException创建ExceptionHandler
- 在Struts-2中使用iText生成PDF:结果类型流不起作用
- 用两个参数散列“SHA256”
- JPA / Hibernate双向多对一导致StackOverflowException