java - 用 javac 编译两个源文件夹
问题描述
使用 eclipse,如果我将需要的文件夹添加到构建路径,程序会正确运行。
我将如何使用命令行编译和运行程序?我需要包含另一个文件夹(带有图标和图像的资源文件夹),但我没有找到办法。
编辑:
为了编译它,我这样做了:
dir /s /B *.java > sources.txt
javac -cp "lib/*" -encoding iso-8859-15 @sources.txt -d Salida
然后运行它:
java -cp "./Salida;./lib/*" simulator.launcher.Main
它是一个 GUI 程序,问题是我也需要资源文件夹,没有它图标不会显示。
文件夹结构:
├───lib (External libraries)
├───resources
│ └───icons
├───Salida (Compiled code)
└───src (Code)
├───extra
│ └───json
└───simulator
├───control
├───factories
├───launcher
├───misc
├───model
└───view
解决方案
您应该使用为编译器指定的类路径和源路径选项,查看Javac -help
命令行上的输出。具体来说
-classpath <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
这些向您展示了包含的语法。
-cp 路径或 -classpath 路径
指定在哪里可以找到用户类文件,以及(可选)注释处理器和源文件。此类路径覆盖 CLASSPATH 环境变量中的用户类路径。如果既未指定 CLASSPATH、-cp 也未指定 -classpath,则用户类路径由当前目录组成。有关详细信息,请参阅设置类路径。
如果未指定 -sourcepath 选项,则还会在用户类路径中搜索源文件。
来自: https ://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html
在您的源代码中,使用以下构造:
package com.foo.package; public class Example { public void loadResourceExample) { Example.class.getResource("/cde/FGH/SomeRandomFile.xml"); Example.class.getResource("relative/example.xml"); } }
第一行将从类路径中提到的任何文件夹或 jar 中加载资源“/cde/FGH/SomeRandomFile.xml”,因此在您的示例命令行中,D:\WorkSpace\Testspace\MyProject\target\classes\cde\FGH\例如,将扫描 SomeRandomFile.xml。
第二行将您的类的包名考虑在内,因此,它将例如在 D:\WorkSpace\Testspace\myProject\dependency\somedep.jar 中检查条目 /com/foo/package/relative/example.xml。
从:
如何加载资源的示例。
推荐阅读
- c++ - QT 实时摄像头显示因内存不足而崩溃
- php - 将 whereIn 与 Laravel 中单独查询的值一起使用
- javascript - Y 滚动事件监听器 useEffect
- python-3.x - 对字典中的数据运行许多函数
- azure - 如何创建 azure 数据工厂管道并在文件到达 SFTP 时自动触发它?
- hibernate - JPA 实体从分离到瞬态,然后持续存在
- go - 接口运行类型断言的解码编译器输出
- laravel - Laravel Eloquent with() 位置搜索
- c# - 为什么我不能在 Sql 中使用循环?有什么更好的方法来解决这种问题?
- javascript - 重复值的数组