[英]Compiling multiple java files within a single file?
试图编译一个多文件 package。 需要通过以下方式编译: javac mainfile.java
同时还通过一个文件编译所有其他(大约 4 个 other.java 文件)? 我曾尝试使用诸如扩展和import package.*
任何帮助将不胜感激。
我使用了不同的编译方法和 arguments 但尝试仅通过插入javac mainfile.java
和java mainfile
总结:试图一次编译多个java文件,通过java编译单个文件。
我当前的主文件代码:
package mypackage;
import mypackage.*;
public class mainfile{
public static void main(String[] args) {
Myfile.main(args) //run main from other file
}
}
编辑:抱歉缺少信息,编译时,编译器返回:
MainFile.java:15: error: cannot find symbol
Myfile.main(args);
^
symbol: variable Myfile
location: class mainfile
1 error
javac
作为一个工具不能做你想做的事。 但是,这就是存在其他工具的原因。
您所要求的归结为“我想要一个构建系统”。 绝大多数 java 项目使用maven或gradle 。
看起来这很好用:
javac -sourcepath src src/mainfile.java
但你会被欺骗。 这只会编译mainfile.java
中的代码直接引用的所有源文件,但还有许多其他方法可以引用代码,例如 SPI、反射、XML 配置文件。 绝大多数 java 项目最终将使用一些最终“破坏” -sourcepath
“技巧”的结构,而不是迟早,这大概就是为什么所有 java 项目都使用构建系统而不是依赖于-sourcepath
的原因。
请注意,所有源文件的行为都好像它们具有:
import java.lang.*;
import yourownpackage.*;
在顶部,无论您是否将其写出来。 而且,对于“别名”, import
是 java-ese。 import foo.bar.Baz;
意味着:每当“Baz”作为一种类型出现在此文件中时,假设我的意思是写“foo.bar.Baz”,仅此而已: import foo.bar.Baz
不会运行 Baz class 中的任何代码. 如果你不使用 Baz,那么生成的 class 文件根本没有提到 Baz。 这也不会导致 javac 编译整个目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.