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,看看是不是已经能够启动了。

浙公网安备 33010602011771号