如何使用两个主类(一次只运行一个)调用一个全局java文件来构建解决方案
大家好, 我需要关于为以下场景构建解决方案的最佳方法的建议 a) 在一个项目中,我有两个主要类文件,如何使用两个主类(一次只运行一个)调用一个全局java文件来构建解决方案,java,jar,build,Java,Jar,Build,大家好, 我需要关于为以下场景构建解决方案的最佳方法的建议 a) 在一个项目中,我有两个主要类文件,a.java和B.java。还有另一个文件, C.java,分别由A.java或B.java调用。无论如何 一次只能运行A.java或B.javaC.java包含一个函数,该函数将值传递给a.java或B.java,具体取决于正在执行的文件C.java可以被视为a.java和B.java b) 例如,如果执行A.java,它将调用C.java,将一些值传递回A.java 希望获得关于构建此解决方案
a.java
和B.java
。还有另一个文件,C.java
,分别由A.java
或B.java
调用。无论如何
一次只能运行A.java
或B.java
C.java
包含一个函数,该函数将值传递给a.java
或B.java
,具体取决于正在执行的文件C.java
可以被视为a.java
和B.java
b) 例如,如果执行A.java
,它将调用C.java
,将一些值传递回A.java
希望获得关于构建此解决方案的最佳方法的建议,以便用户可以在调用全局C.java
时随意运行a.java
或B.java
多谢各位。如果需要更多信息,请随时告诉我。我发现最干净的方法之一是创建一对可执行JAR,每个JAR都有一个清单,指定哪个类是主类。使用ant,您可以为构建指定两个目标“a”和“b”。下面是一个完整的示例,这里的关键是再次指定清单中的主要内容,并让ant构建两个可执行文件。尺寸效率不高,但做您想做的事情的方式非常明确
<project name="a_or_b" basedir="." default="main">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="deploy.dir" value="bin"/>
<property name="main-class-a" value="package.a.mainclass"/>
<property name="main-class-b" value="package.b.mainclass"/>
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${deploy.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" debug="on" destdir="${classes.dir}"/>
</target>
<target name="jar-a" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}-a.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class-a}"/>
</manifest>
</jar>
</target>
<target name="jar-b" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}-b.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class-b}"/>
</manifest>
</jar>
</target>
<target name="jar" depends="jar-a,jar-b"/>
<target name="deploy" depends="clean,jar">
<mkdir dir="${deploy.dir}"/>
<copy todir="${deploy.dir}">
<fileset dir="${jar.dir}"/>
</copy>
</target>
<target name="main" depends="clean,jar,deploy"/>
</project>
创建一个新类Main.java
,该类将包含项目中唯一的Main方法。从A.java
和B.java
中删除主要方法Main.java
将根据命令行参数调用A.java
或B.java
。用户可以处理从命令行运行哪一个。对于特定的问题,您可以提供更多的上下文吗?您应该让A
或B
将其自身注入C
或向C
注册回调。