weblogic12C安装和部署springboot2.x项目遇到的问题

时间:2024-04-10 19:03:00

weblogic安装

直接参照网上的安装教程:
weblogic安装教程
遇到的问题:
以上教程中的安装方式是直接解压安装的jar包,然后到相应的目录下启动安装程序。
还有一种方式就是用java命令的方式启动这个jar包,然后安装:

java -jar fmw_12.2.1.3.0_wls.jar

然后这时会报错如下:

正在提取安装程序... . . . . . . . . . . . . . . . 完成
此安装程序必须使用 Java 开发工具包 (JDK) 执行,
但 D:\soft\dev\Java\jre1.8.0_111 不是有效的 JDK Java 主目录。
日志位于此处: C:\Users\xiangquba\AppData\Local\Temp\
OraInstall2017-09-30_05-35-21PM\launcher2017-09-30_05-35-21PM.log。

网上搜索的原因,说是需要把weblogic的jar包放在jdk的bin目录下面再执行java -jar fmw_12.2.1.3.0_wls.jar命令。
尝试以后还是报不是有效的JDK主目录。
想了一下,可能是JDK的问题,我仔细检查了JDK的环境变量,确认没有问题。然后在CMD里面输入以下命令:

weblogic12C安装和部署springboot2.x项目遇到的问题
发现一个很神奇的现象,java的版本是1.8 javac的版本是1.7
随后我查看了jdk1.8的bin目录下发现没有javac.exe。
OK,现在找到了问题。但是为什么会这样呢?
我先卸载了电脑上的jdk1.7和1.8。然后在重新安装1.8的过程中发现了问题。
我们在安装jdk的时候,会先安装jdk,然后安装jre,这个过程需要我们选择两次安装目录,一次是jdk的安装目录,一次是jre的:
weblogic12C安装和部署springboot2.x项目遇到的问题
weblogic12C安装和部署springboot2.x项目遇到的问题
我在选择jre的安装目录时,选择了jdk的目录,导致安装的时候覆盖了jdk目录下的一些东西。最好的办法就是直接点击右上角的叉,不安装jre。要么就和jdk安装到同级目录。
经过以上重新安装jdk,然后正确安装jre的操作后,成功解决了weblogic在安装过程中出现的xxxxx不是有效的 JDK Java 主目录的问题。

weblogic12C部署springboot2.x项目

修改项目的pom文件改为打war包,并排除到springboot-start-web中的tomcat,加上单独的tomcat,设置域为provided

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
       </dependency>

启动类实现WebApplicationInitializer

package com.example;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.web.WebApplicationInitializer;
 
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

然后直接打成war包,按照网上的部署方式部署到weblogic即可

部署war包到weblogic12C

测试结果

通过对springboot2.x项目的改造,加上以上的部署教程,终于部署成功了:
weblogic12C安装和部署springboot2.x项目遇到的问题
接口测试,注意:访问的端口号为weblogic默认的端口7001,这个可以在weblogic控制台设置。
weblogic12C安装和部署springboot2.x项目遇到的问题

部署时遇到的坑

首先就是weblogic版本与jdk版本冲突的问题。我现在开发用的是jdk1.8,但是weblogic只有12C支持jdk1.8,所以在之前部署时老是报错,报各种奇葩的错误,参照了网上各种方法还是不行。最后换了weblogic12C就一切迎刃而解了。不需要像网上的教程那样在工程里面新增web.xml和weblogic.xml。直接按上面的修改打包部署到weblogic即可。

额外的收获

之前在eclipse里面打包项目时老是报:

 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

现在回想起来也可能是在安装jdk时安装了jre,并将jre的安装目录选择成了jdk目录造成jdk的bin目录下没有javac.exe,无法编译class文件。