4

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

我正在使用 Glassfish 应用程序服务器。我可以抓住客户使用

 asadmin get-client-stubs --appname APPLICATION_NAME .

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

IE

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 引用其他主类?

4

1 回答 1

2

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 方法。

-蒂姆

于 2009-08-13T01:01:47.423 回答