在编译期间将Java文件保存在包中



在我的Java类中,我想输出同一项目的另一个(未编译的)Java类的代码。这是包的结构:

main (package)
   files (package)
      SampleClass.java
      SampleFile.txt
CodeOutput.java

CodeOutput.java的代码:

public class CodeOutput {
    public void run() {
        InputStream in = getClass().getResourceAsStream("files/SampleClass.java");
        BufferedReader stream = new BufferedReader(new InputStreamReader(in));
        try {
            System.out.println(stream.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        new CodeOutput().run();
    }
}

我尝试从files包中加载文件SampleClass.java并输出其第一行。但是,Java文件在编译后不会保留在包中。我还试图将文件从构建路径中排除(在文件的上下文菜单中:构建路径->排除),因此代码未编译为.class文件,但Java文件仍未出现在包中。它与SampleFile.txt一起工作很好,所以我确信它与项目/构建路径设置有关。

有任何想法如何对待Java文件像其他资源在一个包?

Eclipse将编译src/main/java下的所有.java文件。如果您不希望编译java文件,请将其保存在/src/main/resources下。另外,如果使用maven构建源代码,可以很容易地将源代码包含在jar文件中。说明这里

在java源代码之外创建一个新目录,并将该目录添加到类路径中。您可以在该目录下创建相同的包结构。因此,CodeOutput将是一个可编译的java类,但在类路径的新目录下添加的所有文件都不会。

如果你不想这样做,你就不能像现在这样访问你的源文件

最新更新