繁体   English   中英

在单个文件中编译多个 java 文件?

[英]Compiling multiple java files within a single file?

试图编译一个多文件 package。 需要通过以下方式编译: javac mainfile.java同时还通过一个文件编译所有其他(大约 4 个 other.java 文件)? 我曾尝试使用诸如扩展和import package.*任何帮助将不胜感激。

我使用了不同的编译方法和 arguments 但尝试仅通过插入javac mainfile.javajava 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 项目使用mavengradle

看起来这很好用:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM