将 java 入口点设置为位于另一个 JAR 中的 JAR 中的 class
Set java entrypoint to a class that's in a JAR inside another JAR
我有一个用 One Jar 打包的 JAR,因此它内部包含多个依赖项(使用 JAR URL 表示法):
<one.jar>!/lib/<deps1.jar>
<one.jar>!/lib/<deps2.jar>
...
是否有可能 运行 main()
来自居住在 deps2.jar
的 class com.example.A
?
我试过 java -cp one.jar!/lib/deps2.jar com.example.A
,但没用。
您可以在委托给 com.example.A.main() 的主 .jar 中的某处包含一个 main()。这将为您提供您所寻求的行为,只需几行额外的代码......一个小的额外 class 定义文件。例如:
package foo.bar;
import com.example.A;
class MainEntryDelegate {
public static void main(String... args) {
com.example.A.main(args);
}
}
因此您的应用程序将可以通过显而易见的方式运行:
java -cp one.jar foo.bar.MainEntryDelegate
或者如果您已正确设置清单:
java -jar one.jar
我有一个用 One Jar 打包的 JAR,因此它内部包含多个依赖项(使用 JAR URL 表示法):
<one.jar>!/lib/<deps1.jar>
<one.jar>!/lib/<deps2.jar>
...
是否有可能 运行 main()
来自居住在 deps2.jar
的 class com.example.A
?
我试过 java -cp one.jar!/lib/deps2.jar com.example.A
,但没用。
您可以在委托给 com.example.A.main() 的主 .jar 中的某处包含一个 main()。这将为您提供您所寻求的行为,只需几行额外的代码......一个小的额外 class 定义文件。例如:
package foo.bar;
import com.example.A;
class MainEntryDelegate {
public static void main(String... args) {
com.example.A.main(args);
}
}
因此您的应用程序将可以通过显而易见的方式运行:
java -cp one.jar foo.bar.MainEntryDelegate
或者如果您已正确设置清单:
java -jar one.jar