- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 Java Ant 项目,它创建一个可执行 Jar,以便通过 T3 协议(protocol) (Weblogic) 连接到 JNDI。我建立连接和列出 JNDI 没有问题:)例如,我可以看到 weblogic.management.j2ee.mejb.Mejb_dj5nps_EOImpl mejbmejb_jarMejb_EO JNDI 是可访问的。
我的可执行 Jar 包含 weblogic 类(存储在 weblogic.jar 中的类)。
我使用此 Ant 代码来创建可执行 Jar:
<target name="dist" depends="compile">
<jar destfile="${dist.dir}/JndiConnection.jar" basedir="${build.dir}">
<zipgroupfileset dir="${lib.dir}">
<include name='**/*.jar'/>
</zipgroupfileset>
<manifest>
<attribute name="Main-Class" value="${ant.project.name}" />
<attribute name="Class-Path" value="${ant.project.name}.jar" />
</manifest>
</jar>
</target>
lib 目录 (${lib.dir}) 至少包含 wlfullclient.jar 和 mejb.jar。
现在,我想查询 JMO 的名称(参见 http://docs.oracle.com/cd/E23943_01/web.1111/e13736/toc.htm#JEEMG106 中的源代码)。我已将此代码放入我的项目中(请参阅 http://docs.oracle.com/cd/E23943_01/web.1111/e13736/toc.htm#JEEMG106 中的“示例 1 查询 JMO 名称”)。在我的可执行 Jar 中,我将所有类存储在 mejb.jar 中:
Archive: mejb.jar
Length Date Time Name
--------- ---------- ----- ----
147 2011-11-15 09:01 META-INF/MANIFEST.MF
0 2011-11-15 09:01 META-INF/
882 2011-11-15 09:01 META-INF/ejb-jar.xml
857 2011-11-15 09:01 META-INF/weblogic-ejb-jar.xml
0 2011-11-15 09:01 weblogic/
0 2011-11-15 09:01 weblogic/management/
0 2011-11-15 09:01 weblogic/management/j2ee/
0 2011-11-15 09:01 weblogic/management/j2ee/mejb/
6622 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl.class
2284 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImplRTD.xml
7442 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_1036_WLStub.class
7288 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_WLSkel.class
2548 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl.class
1161 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImplRTD.xml
4976 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_1036_WLStub.class
4200 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_WLSkel.class
2414 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl.class
1724 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_Intf.class
290 2011-11-15 09:01 _WL_GENERATED
--------- -------
42835 19 files
我的可执行 Jar 中的一些类:
$ 7z l JndiConnection.jar | grep 'weblogic/management/j2ee/mejb/'
2011-11-15 09:01:30 ..... 6622 2303 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl.class
2011-11-15 09:01:32 ..... 2284 553 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImplRTD.xml
2011-11-15 09:01:32 ..... 7442 2565 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_1036_WLStub.class
2011-11-15 09:01:32 ..... 7288 2844 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_WLSkel.class
2011-11-15 09:01:30 ..... 2548 1128 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl.class
2011-11-15 09:01:32 ..... 1161 425 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImplRTD.xml
2011-11-15 09:01:32 ..... 4976 1845 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_1036_WLStub.class
2011-11-15 09:01:32 ..... 4200 1890 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_WLSkel.class
2011-11-15 09:01:30 ..... 2414 926 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl.class
2011-11-15 09:01:30 ..... 1724 661 weblogic/management/j2ee/mejb/Mejb_dj5nps_Intf.class
2008-07-25 17:38:32 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class
2011-11-15 08:55:40 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class
当我想运行 jar(java -jar JndiConnection.jar 或 java -cp '.:JndiConnection.jar:/path/to/libs/*' JndiConnection)时,出现以下错误:
Java.rmi.RemoteException: EJB Exception: ; nested exception is:
java.lang.NoClassDefFoundError: weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at weblogic.management.j2ee.mejb.Mejb_dj5nps_EOImpl_1036_WLStub.queryNames(Unknown Source)
at Mejb.getAllJMONames(Unknown Source)
我不明白,因为我的可执行 Jar 中有 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl 。我认为 Jar 找不到它,但我不知道为什么......
我尝试过 list :
Main-Class: JndiConnection
Class-Path: . JndiConnection.jar
和:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_65-b32 (Oracle Corporation)
Main-Class: JndiConnection
Class-Path: .
JndiConnection.class位于根目录:
Listing archive: JndiConnection.jar
Path = JndiConnection.jar
[...]
2014-12-31 16:54:26 ..... 7645 3454 JndiConnection.class
[...]
我使用 Apache Ant 1.8.4 因为我的 zip 文件 (jar) 中需要包含超过 65535 个条目。当我使用最新的 Ant 版本 (1.9.3) 时出现此错误:
Problem creating jar: archive contains more than 65535 entries.
- 编辑 1
我可以在 Deployments->Monitoring->EJB 中看到一个 Mejb 实例。
在网络中心的常规配置中启用“启用管理EJB”复选框。如果我理解的话,这个复选框允许管理员启用或禁用 MEJB。
我在部署->监控->EJB中看到一行包含有关 Mejb 应用程序的信息。此行显示已与 MEJB 应用程序建立 77 个连接,但有 77 个连接失败。
预先感谢您的帮助。
注意:我使用的是 Weblogic 10.3.6.0 版本。
最佳答案
如果您的可执行 JAR 是 JndiConnection.jar,那么您不应在 list 中引用其自身。类路径用于引用例如未包含在可执行 JAR 中的依赖 jar。如果您对 JAR 范围之外的其他类或 JAR 没有依赖关系,那么您可以尝试以下操作:
Main-Class: com.bla.bla.JndiConnection
Class-Path: .
不要忘记您还必须显示该类(class)的包。因此请提供类的完全限定名称。
同样在Weblogic管理控制台中,您可以看到bean池中有任何实例(对于Mejb_dj5nps)吗?
以下是检查 Bean 是否存在的方法:在 WebLogic 控制台中:转到“部署”->“监控”->“EJB”(如果您部署了 EJB,您应该在此处看到它)
附上屏幕截图,您可以看到我已经部署了远程 EJB 进行测试
在您的可执行 JAR 中,您有:
2008-07-25 17:38:32 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class
2011-11-15 08:55:40 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class
这导致了一个问题。
您希望使用 WebLogic Server 10.x 或更高版本。然后只需使用wlfullclient.jar并且不要使用mejb.jar。 从 ${lib.dir} 中删除 mejb.jar 并重建可执行 JAR。
检查有关 wlfullclient.jar 的链接 Client-side Applications
关于java.lang.NoClassDefFoundError : weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720681/
我是一名优秀的程序员,十分优秀!