如何使用 .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 也不起作用。

原文由 Rebecca Nelson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 420
2 个回答

检查清单:

  1. 您在 acm.jar 中的类显示为:

    acm/程序/CLASSX.class

    acm/程序/CLASSY.class

当用 jar tf acm.jar 倒出时

  1. 您正在导入它们,例如:

导入 acm.program.CLASSX ;

或者

导入 acm.program.* ;

原文由 Andrew 发布,翻译遵循 CC BY-SA 3.0 许可协议

javac -cp <jar you want to include>;<jar you want to include> <source.java>

<jar you want to include> 如果在同一目录中,只需jar 的名称即可,如果不在,则指定完整或相对路径

如果不止一个罐子,用 , 分开

; 替换为 :unix

如果可能,使用像 Eclipse 这样的 IDE。我曾经花很多时间在类似的事情上,但在工业界,你几乎不会以这种方式去做。

原文由 Bhushan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏