java - 编译包,包括通过命令行的 jars
问题描述
我正在使用 Netbeans IDE,但我试图通过 unix shell 编译和运行我的项目:
我有一个包:project/src/packageName/.java 文件
还有我的罐子:project/lib/.jar 文件
src/packagename/.. 下的类或多或少相互依赖,并且它们也在使用所述库。
我通过 Netbeans 添加了库(尽管 NetBeans 无法识别我在项目中使用的库中的类,所以我需要先提取 .jar 文件并将 NetBeans 引导到包含库中的 .class 文件的提取 jar 文件夹)。
当我在 NetBeans 中运行包含 main() 方法的类时,它工作得很好。但我正在尝试通过使用 javac 的 unix shell 来完成此操作。
我的问题:如何编译我的项目,包括 jars/foreign 库。我已经尝试了以下方法:
javac -classpath ".:jar1.jar:jar2.jar:" /path/to/project/src/packageName *.java
它仍然说找不到符号(引用库中的类)
抱歉,如果这个问题已经在其他地方得到了回答,但经过几个小时的研究,我无法让它发挥作用。我想我做错了什么可怕的事情?
解决方案
请阅读 Java 文档javac
,这里是JDK14 javac。
您可以尝试许多其他选项,特别是如果您想定义不同的文件编码或 JRE 源/目标。
如果使用当前目录的相对路径,您可以简化命令,cd
首先到您的项目目录。这是一个简单的调用:
javac -d build/my.classes -sourcepath src -cp lib/abc.jar:lib/xyz.jar src/packageName/*.java
您可能需要mkdir build
或其他一些目录来存储临时文件。java
在此之后,您可以尝试在文件上使用直接命令运行您的应用程序。
推荐阅读
- javascript - 反应表单的 onChange 未在值更改时触发
- laravel - 无法使用 Vue.js 在 Laravel 中以经过身份验证的用户身份发出请求
- ruby - 如何通过动态接收类名来实例化类
- sql - sqldf R错误创建表
- c - C:将自由语句移动到单独的函数中会导致内存泄漏
- rust - 为自定义类型实现 AsExpression 和 FromSqlRow
- php - PHP-如何合并/加入 MySQL 表?
- mysql - MySql 根据不同的条件从同一个表中选择列
- c# - 在声明中从 Azure AD 获取职位信息(职位、部门和经理 ID)
- java - 使用 Hazelcast readUTF 时字符串索引超出范围