首页 > 解决方案 > 用 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

标签: javaeclipse

解决方案


您应该使用为编译器指定的类路径和源路径选项,查看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。

从:

如何在 Java 命令行选项中将资源文件夹添加到类路径

如何加载资源的示例。


推荐阅读