应用程序客户端 jar 的多个入口点(主类)

发布于 2024-08-01 13:50:21 字数 702 浏览 9 评论 0原文

如何在应用程序客户端 jar 中设置多个入口点?

我正在使用 Glassfish 应用服务器。 获取客户端

 asadmin get-client-stubs --appname APPLICATION_NAME .

我可以使用我当前可以运行我在 MANIFEST.MF 中指定的默认主类来 。 但是,我希望能够在运行时指定另一个主类。

appclient -client MYJAR.jar -mainclass com.mystuff.Main1
and
appclient -client MYJAR.jar -mainclass com.mystuff.Main2

Main1 和Main2 都有“public static void main”入口点。

如果我指定的主类不在 MANIFEST.MF 中,则会出现以下异常:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Could not locate an embedded app client matching the main class name

我需要进行任何更改才能让 appclient 引用其他主类吗?

How do I set up multiple entry points in an application client jar?

I am using Glassfish application server. I can grab the client using

 asadmin get-client-stubs --appname APPLICATION_NAME .

I currently can run the default mainclass that I have specified in the MANIFEST.MF. However, I want to be able to specify another mainclass at runtime.

ie

appclient -client MYJAR.jar -mainclass com.mystuff.Main1
and
appclient -client MYJAR.jar -mainclass com.mystuff.Main2

Both Main1 and Main2 have "public static void main" entry points.

If I specify a mainclass that is not in MANIFEST.MF, I get the following exception:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Could not locate an embedded app client matching the main class name

Do I need to make any changes to have the appclient reference other mainclasses?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

躲猫猫 2024-08-08 13:50:21

http://forums.java.net/jive/thread。 jspa?threadID=65549&tstart=0 <-- 我在这里重新发布了同样的问题,有人给出了答案...

嗨。

GlassFish 应用程序客户端容器使用 -mainclass 选项来区分打包到同一 EAR 中的多个客户端,因此在启动时,用户可以选择要启动打包在一起的多个客户端中的哪一个。 正如您所发现的,它不允许用户覆盖开发人员关于在给定客户端中运行的主类的意图。

您可以使用 v3 中提供的替代 appclient 语法执行您想要的操作:

http://docs.sun .com/app/docs/doc/820-7701/appclient-1m?a=view

对于 v2,您当然可以编写单个主类来接受指定要运行的类的参数,然后动态加载该类并调用其 main 方法。

-蒂姆

http://forums.java.net/jive/thread.jspa?threadID=65549&tstart=0 <-- I reposted the same question here and someone gave the answer...

Hi.

The GlassFish app client container uses the -mainclass option to distinguish among multiple clients packaged into the same EAR so, at launch time, the user can choose which of those several clients that were packaged together to launch. As you've discovered, it does not allow the user to override the intent of the developer as to the main class to run within a given client.

You could do what you want using the alternate appclient syntax available in v3:

http://docs.sun.com/app/docs/doc/820-7701/appclient-1m?a=view

For v2 you could certainly write your single main class to accept an argument that specifies a class to be run and then load that class dynamically and invoke its main method.

-Tim

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文