目前我正在寻找一种不需要将Java程序添加到JAR文件的方法来从命令行运行它。我的程序包含以下类:
程序文件名 - MyProgram
主类 - Server1
第二个类 - Client Handler
包名 - Items
第三个类 - User1
第四个类 - User2
为了让用户1和用户2运行,必须先运行主类和客户端处理程序以及它们所在的包,因为它们是客户端类,并且依赖于主类。
javac *.java // compliles all java files in the dir
java MyClass // runs the particular file
如果一个类依赖于尚未编译的其他类,则程序将无法运行。因此,在尝试运行依赖于其他文件的程序之前,应先编译所有文件。javac com.mypackage/.*java
java com.mypackage.MyClass
您必须确保将 .class 文件的位置添加到类路径中。因此,如果它在当前文件夹中,则将 . 添加到您的类路径中。请注意,Windows 的类路径分隔符是一个半角分号,即 ;
javac -cp . PackageName/*.java
java -cp . PackageName/ClassName_Having_main
示例。假设您有以下内容:
包名:com.test
类名:Hello(具有主要函数)
Java文件位于“src/com/test/Hello.java”中
然后,从外部目录开始:
$ cd src
$ javac -cp . com/test/*.java
$ java -cp . com/test/Hello
请注意,你可以添加“-d”来指定编译时类文件的输出目录。
$ javac -d output_directory -cp . com/test/Hello
在 Windows 系统中,同样的事情也可以工作,我已经尝试过。
请查看来自 Oracle 官方网站的此链接
在编译代码后,您需要从顶层运行以下命令:
java -cp . com.myprogram.MyProgram
您描述的那个订单不重要。它们都会被编译在一起,MyProgram
将引用Server1
等。
这可能超出您目前想要解决的问题范围,但您可以考虑使用构建系统Maven。首先,尝试一下;如何创建我的第一个Maven项目?
您可以使用它预定义构建顺序,并在需要时为您创建jar包(或不创建)。
执行两个相互依赖的Java程序。
(例如:两个文件Complex.java和Solution.java,其中Solution.java依赖于Complex.java。
因此,必须首先编译Complex.java,然后将Complex的类文件与Solution.java链接起来,最后执行Solution.class以获得输出。)
请参考语法的图像。
语法- javac -d [path_where_class_File_build] -cp [path_of_the_first_class_created] [path_of_the_file\filename.java]
步骤3: