在我的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();
}
}
我尝试从SampleClass.java
包中加载文件files
并输出其第一行。但是,编译后Java文件不会保留在包中。我还试图从构建路径中排除该文件(在文件的上下文菜单中:Build Path - > Exclude),因此代码不会编译为.class
文件,但仍然Java文件没有出现在包中。它适用于SampleFile.txt
,所以我确定它与项目/构建路径设置有关。
如何将Java文件视为包中的其他资源?
答案 0 :(得分:0)
Eclipse将编译src/main/java
下的所有.java文件。如果您不想编译java文件,请将其保存在/src/main/resources
下。此外,如果您使用maven构建源代码,则可以轻松地在jar文件中包含源代码。 Instructions here
答案 1 :(得分:0)
在java源代码外创建一个新目录,并将该目录添加到类路径中。您可以在该目录下创建相同的包结构。所以CodeOutput是一个可编译的java类,但是在类路径的新目录下添加的所有文件都不会。
如果您不想这样做,则无法以您现在尝试访问它们的方式访问您的源文件。