Weblogic发布EJB程序出错(Compiler failed executable.exec)的解决方法
今天项目组一同事机器重装了WindowsXP,再安装了Weblogic8.1.5,然后把我们的应用程序(带EJB)部署一下,结果部署不上去,找了好半天都没找到问题。出错的现象如下:
####<2008-7-22 下午01时18分21秒 CST> <Error> <Deployer> <soyen-bf7e4d7e2> <myserver> <main> <<WLS Kernel>> <> <BEA-149205> <Failed to initialize the application vsms due to error weblogic.management.ApplicationException: prepare failed for wfeserver-ejb.jar
{
Module Name: wfeserver-ejb.jar, Error: Exception preparing module: EJBModule(wfeserver-ejb.jar,status=NEW)
{
Module Name: wfeserver-ejb.jar, Error: Exception preparing module: EJBModule(wfeserver-ejb.jar,status=NEW)
Unable to deploy EJB: wfeserver-ejb.jar from wfeserver-ejb.jar:
Compiler failed executable.exec
at weblogic.ejb20.ejbc.EJBCompiler.doCompile(EJBCompiler.java:274)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:476)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:407)
at weblogic.ejb20.deployer.EJBDeployer.runEJBC(EJBDeployer.java:493)
at weblogic.ejb20.deployer.EJBDeployer.compileJar(EJBDeployer.java:784)
at weblogic.ejb20.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:700)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1339)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:498)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:3142)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1583)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1227)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1070)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:823)
at weblogic.management.deploy.slave.SlaveDeployer$Application.prepare(SlaveDeployer.java:3029)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllApplications(SlaveDeployer.java:967)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:349)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
at weblogic.Server.main(Server.java:32)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:476)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:407)
at weblogic.ejb20.deployer.EJBDeployer.runEJBC(EJBDeployer.java:493)
at weblogic.ejb20.deployer.EJBDeployer.compileJar(EJBDeployer.java:784)
at weblogic.ejb20.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:700)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1339)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:498)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:3142)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1583)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1227)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1070)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:823)
at weblogic.management.deploy.slave.SlaveDeployer$Application.prepare(SlaveDeployer.java:3029)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllApplications(SlaveDeployer.java:967)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:349)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
at weblogic.Server.main(Server.java:32)
java.io.IOException: Compiler failed executable.exec
at weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(CompilerInvoker.java:469)
at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:328)
at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:336)
at weblogic.ejb20.ejbc.EJBCompiler.doCompile(EJBCompiler.java:270)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:476)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:407)
at weblogic.ejb20.deployer.EJBDeployer.runEJBC(EJBDeployer.java:493)
at weblogic.ejb20.deployer.EJBDeployer.compileJar(EJBDeployer.java:784)
at weblogic.ejb20.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:700)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1339)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:498)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:3142)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1583)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1227)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1070)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:823)
at weblogic.management.deploy.slave.SlaveDeployer$Application.prepare(SlaveDeployer.java:3029)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllApplications(SlaveDeployer.java:967)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:349)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
at weblogic.Server.main(Server.java:32)
at weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(CompilerInvoker.java:469)
at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:328)
at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:336)
at weblogic.ejb20.ejbc.EJBCompiler.doCompile(EJBCompiler.java:270)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:476)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:407)
at weblogic.ejb20.deployer.EJBDeployer.runEJBC(EJBDeployer.java:493)
at weblogic.ejb20.deployer.EJBDeployer.compileJar(EJBDeployer.java:784)
at weblogic.ejb20.deployer.EJBDeployer.compileIfNecessary(EJBDeployer.java:700)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1339)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:498)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:3142)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1583)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1227)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1070)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:823)
at weblogic.management.deploy.slave.SlaveDeployer$Application.prepare(SlaveDeployer.java:3029)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllApplications(SlaveDeployer.java:967)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:349)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
at weblogic.Server.main(Server.java:32)
}.
开始以为是Weblogic8.1.5版本问题,因为我的机器是Weblogic8.1.4可以正常运行,卸除Weblogic8.1.5,重装Weblogic8.1.4后,问题依旧,真晕。从来没发生过这样的情况,因为我们项目组都是部署这个程序,没有发生过这样的现象题。
后来查看了环境变量,JDK版本等等,一切正常,还试了网上的一个办法
参考http://forums.sun.com/thread.jspa?threadID=492907&messageID=2319367&forumID=13
修改Weblogic服务器的JAVA编译器选择,还是不行。
后来查看了环境变量,JDK版本等等,一切正常,还试了网上的一个办法
参考http://forums.sun.com/thread.jspa?threadID=492907&messageID=2319367&forumID=13
修改Weblogic服务器的JAVA编译器选择,还是不行。
下班后又在网上google了一下,终于解决了,在是BEA的论坛上找到的,
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=103&threadID=20753&start=0&tstart=30
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=103&threadID=20753&start=0&tstart=30
进入Windows XP的控制面板,进入区域和语言选项,点高级。去掉 54936 (gb18030 简体中文)前面的对号,如下图所示。再重新启动一下Weblogic后部署一下就OK了。
JAVA总是这样,让人不爽,如果现在没有搜索引擎,不知道这个问题该如何才能解决。