在我的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类,但在类路径的新目录下添加的所有文件都不会。
如果你不想这样做,你就不能像现在这样访问你的源文件