Win10 + JDeveloper 11g(build 11117)的weblogic启动问题总结

因为公司项目要用win10+Jdeveloper 11这个sb组合,所以为了能够在本地调试所以必须要启动weblogic,然鹅...oracle官网上写着jdeveloper 11只支持到win7。

所以为了能够完成本地调试必须要让jdeveloper的weblogic能在win10下运行。

下面对这两天踩得坑做一个总结。

 

首先,不能从Jdeveloper 启动自带weblogic的原因就是通用版的安装文件没有针对win系统进行优化,

如果直接下载win版的话就不存在无法启动问题

存在启动问题的安装包都是jar包(即通用版),如果想在win10顺利进行调试,则直接下载win版安装文件即可。

下载地址:https://www.oracle.com/tools/downloads/jdev-11g-11117-downloads.html

但是公司禁止自己下载安装文件,给提供的就是JAR版的,要下win版的还得申请,所以为了免得麻烦,还是自己动手把。

1.一般安装文通用版之后,在run->start server instance之后会报如下错误:

  Failed to get environment, environ will be empty: (0, 'Failed to execute command ([\'sh\', \'-c\', \'env\']): java.io.IOException: Cannot run program "sh": CreateProcess error=2, The system cannot find the file specified')

  Error:  ADRS_DOMAIN_PASSWORD environment variable not set.

这其实是两个错误,先解决第一行。这个错误意思是无法获取安装环境信息,即不能判断当前OS是什么,所以不知道是该运行cmd文件还是sh文件。

解决这个问题借鉴了stackoverflow上的答案。原问题链接:https://stackoverflow.com/questions/40780972/weblogic-12c-error-adrs-domain-password-environment-variable-not-set

原答案的思路是修改 C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar 里面的 javashell.py文件中关于OS的设置函数。

具体方法如下:

  找到_osTypeMap列表

_osTypeMap = (
    ( "nt", ( 'nt', 'Windows NT', 'Windows NT 4.0', 'WindowsNT',
              'Windows 2000', 'Windows 2003', 'Windows XP', 'Windows CE',
              'Windows Vista', 'Windows Server 2008', 'Windows 7' )),
    ( "dos", ( 'dos', 'Windows 95', 'Windows 98', 'Windows ME' )),
    ( "mac", ( 'mac', 'MacOS', 'Darwin' )),
    ( "None", ( 'None', )),
    )
在"nt"里面填上'Windows 10',使其能识别win10系统。
_osTypeMap = (
    ( "nt", ( 'nt', 'Windows NT', 'Windows NT 4.0', 'WindowsNT',
              'Windows 2000', 'Windows 2003', 'Windows XP', 'Windows CE',
              'Windows Vista', 'Windows Server 2008', 'Windows 7', 'Windows 10')),
    ( "dos", ( 'dos', 'Windows 95', 'Windows 98', 'Windows ME' )),
    ( "mac", ( 'mac', 'MacOS', 'Darwin' )),
    ( "None", ( 'None', )),
    )

但是呢,这是jdeveloper 12c + win10 的解决方法,用在jdeveloper 11g + win10的组合完全不给力,

所以我的方法是修改这个函数的返回值,反正看这个函数的意思就是想要返回'nt'这个字符串,那么就强制返回值为'nt'就好了啊。。。。

那么修改方法如下

foundType = "nt"  #在函数中插入这行代码
return foundType

然后用jar –cvf jython-modules.jar * 重新打包,替换原jython-modules.jar 即可。

 现在第一行的应该已经被解决掉了,那么我们开始解决第二行的错误 Error:  ADRS_DOMAIN_PASSWORD environment variable not set.

这个错误估计是由上一个错误引起的,但是即使解决了上一个错误这个错误也不会被修复,所以还是要手动解决。

这个解决方法也是stackoverflow上找到的,链接:https://stackoverflow.com/questions/8858490/jdeveloper-integratedweblogicserver-not-able-to-build-default-domain

简单说就是要修改C:\Users\{UserName}\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\o.j2ee.adrs\CreateDefaultDomain.py文件,如下

import os
os.putenv('ADRS_DOMAIN_PASSWORD', 'welcome1') #添加这一行
if not 'ADRS_DOMAIN_PASSWORD' in os.environ:
  print("Error:  ADRS_DOMAIN_PASSWORD environment variable not set.")
  exit() 

修改完成之后,删除C:\Users\{UserName}\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain文件夹,否则在Jdeveloper中无法重启weblogic.

3.重启weblogic后应该会报一个错误,

Unrecognized option: -jrockit
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

这是因为配置文件中的内容不正确导致的,修改方法如下

打开C:\Users\{UserName}\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\bin\setDomainEnv.cmd

按照下面注释修改

set BEA_JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80

set SUN_JAVA_HOME=

if "%JAVA_VENDOR%"=="Oracle" (
    set JAVA_HOME=%BEA_JAVA_HOME%
) else (
    if "%JAVA_VENDOR%"=="Sun" (
        set JAVA_HOME=%SUN_JAVA_HOME%
    ) else (
        set JAVA_VENDOR=Sun  #将原来的Oracle改为Sun
        set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80  #这里要是没有设置JDK的话设置一下
    )
)

然后再启动weblogic,看看是不是已经能够启动了。

 

posted @ 2020-03-15 17:25  ranbo777  阅读(413)  评论(0)    收藏  举报