服务器mq配置指定JDK+32位与64位jdk冲突解决

1.JDK冲突

服务器上在没有配置环境变量JAVA_HOME的情况下,在cmd查看 java -version 发现默认指向新安装的64位JDK

1.1原因:

因为PATH中含有:C:\ProgramData\Oracle\Java\javapath 这个配置。且放在了path的第一个,就算没加JAVA_HOME和path中没加入JAVA_HOME变量,也是会找到jdk路径。

并打开C:\ProgramData\Oracle\Java\javapath 下查看发现:安装64位的jdk会直接生成新的java.exe,javaw.exe,javaws.exe 三个文件 覆盖掉原来32位的。

1.2解决办法

在本地直接将64位的jdk安装包进行安装,生成出来的文件jdk 和 jre。

因为jdk中包含了jre.

(其实直接配置jre也可以,安全起见,还是放jdk到服务器上)
将jdk直接复制到了activemq目录下(感觉其实也可以放在其他文件下,更规范一些)

1.3检验

直接JAVA_HOME64,变量值填写打开jdk后的系统路径。
在cmd查看 java -version 还是指向原来的32位JDK.

2.activemq指向指定的64位jdk

2.1首先,注意事项

先停止服务再修改配置文件
ActiveMQ的服务是开着的,这时候修改配置文件,还修改了启动服务的名字(因为错以为ActiveMQ是另一个开启的),相当于是重新开启了一个服务,一旦之前的ActiveMQ服务关闭,就再也找不回来了。

非常愚蠢的错误哈哈哈哈,这个之前在大学里学过的,竟然忘记了噢。看来还是需要多回顾,记录

2.2 修改Java指向路径

# Java Application
# wrapper.java.command=java//原来的指向
wrapper.java.command=D:/tactivemq/jdk1.8.0_144/bin/java//直接写了绝对路径

2.3 然后保存,重启了服务,查看data下的wrapper.log

没有明显的报错,就可以啦

另一个协助的判断方法:服务启动起来,五秒钟内状态没有改变,就说明80%可能性是好的。但是一定要看log哈!

2.4 错误修改的名字哈哈哈 也记录下来把

# Title to use when running as a console
wrapper.console.title=ActiveMQ_64
。。。。。

# Name of the service
wrapper.ntservice.name=ActiveMQ_64

# Display name of the service
wrapper.ntservice.displayname=ActiveMQ_64

# Description of the service
wrapper.ntservice.description=ActiveMQ Broker_64

2.5 控制台访问,url

这个还没搞明白,url是在哪里定义的,等待更新

2.+ 配置过程中出现的问题记录

1.+ 配置完毕之后再启动端口号被占用

  • error log
 ERROR: java.lang.RuntimeException: Failed to execute start task. Reason: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
jvm 1    | java.lang.RuntimeException: Failed to execute start task. Reason: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
  • (补充:网上查到的:查看data目录下的activemq.log日志)
java.io.IOException: Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600 due to: java.net.BindException: Address already in use: JVM_Bind

(发现一个关键字: JVM_Bind, 端口冲突。。然后通过TCPVIEW关闭该进程就行了。)

-控制台访问:

netstat -ano|findstr :61616
  • 在控制面板找到对应的线程号,我记得对应名字是Java.exe。 结束了异常的线程。

再去控制台访问:http://xxx.xxx.xx.xx:xxxx/admin/queues.jsp

cmd查看线程号:netstat -ano|findstr :61616

显示出来的应该是一个线程号

3.基本JDK配置

3.1JDK配置

系统变量JAVA_HOME 是写jdk所在路径的.
PATH中%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
除去,JAVA_HOME,PATH中需要配置的。

系统变量classpath也要配置噢,然后变量值是 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意前面英文点号不能漏。

3.2配置多个jdk

直接多命名JAVA_HOME32或者JAVA_HOME64。然后再JAVA_HOME指定要用哪个。
也可以直接当前系统上直接拷贝 jdk文件夹,配置环境变量,再需要用的地方直接指明java地址。

3.3 其他小知识

在C盘下不允许打开cmd噢。在其他盘就可以。Power Shell 要比命令行新。
不要忘记 ,给Java配置系统变量只是为了它可以全局使用,即使不配置,在安装目录下也是可以使用的。

4.Windows对JDK默认版本切换问题

1.检查两个地方:

C:\Windows\System32和C:\ProgramData\Oracle\Java\javapath

下的java.exe,javaw.exe,javaws.exe到底是哪个版本的

2.注册表:运行regedit

找到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft,修改Java Development Kit的CurrentVersion默认值。修改Java Runtime Environment的CurrentVersion默认版本

(删除新安装的jdk,注册表好像会跟着一起全部删除,包括原来的,待验证)

3.改一下JAVA_HOME

保存重新测试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值