首页 > 其他分享 >jar包运行报错1.无主属性清单 2.外部Jar包未导入 3.Data Source url报错解决 4.端口占用报错

jar包运行报错1.无主属性清单 2.外部Jar包未导入 3.Data Source url报错解决 4.端口占用报错

时间:2024-10-19 16:18:10浏览次数:3  
标签:lib 包未 Jar boot jar 报错 spring org

相信大家mvn package打包成jar包后放到服务器上面运行后遇到一些很头疼的问题,怎么按照百度、gpt、csdn上面的博客修改就是成功不了

但是!今天!博主带着自己尝试多次的血泪经验为大家解答以上三大问题!

接下来以“代码+解析”的方式解析大家的问题

一、无主属性问题

报错如下图

这是因为我们pom.xml文件中没有设定主属性导致的,

如图按照格式添加程序运行的主类

切记,如果你的配置文件中含有<skip>true</skip>一定要注释掉,否则就会忽略(skip)掉主属性

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <!-- 这通常用于确保版本的一致性和可维护性 -->
                <version>${spring-boot.version}</version>
                <configuration>
                     <!--主属性,指定应用的主类-->
                    <mainClass>com.example.sensor2.Sensor2Application</mainClass>
<!--                    <skip>true</skip>-->
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

按照上图这样修改就不会报错啦

二、外部jar未导入报错

这种一般报错就是主类外部jar包中封装好的类和功能无法找到和使用

大家可以看到这里报错NoClassDefFound说找不到相关类

其实这个类存在于我的外部jar包之中,我这边没有成功导入到我目前构建的jar包,所以才会报错

接下来我查阅了网上的资料,我将我要导入的外部jar放置到文件主目录下面的lib文件夹中

如下图所示

接着我在pom.xml文件中编写外部jar包依赖

<!--外部jar包,根据自己的实际情况按照模板修改-->
        <dependency>
            <groupId>rk.netDevice</groupId>
            <artifactId>NetDeviceSDKP2</artifactId>
            <version>V2.2.7</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/NetDeviceSDKP2_V2_2_7.jar</systemPath>
        </dependency>

然后!我打包重新运行的时候还是会报错啊啊啊!

其实我们还差一步没有实现

需要在<build></build>目录中编写<resources></resources>实现指定要在jar中输出的东西

 <!--每个标签定义了一组要包含在构建输出中的资源文件-->
        <resources>
  <!--如果还有其他资源文件夹,比如 lib 文件夹,则也可以继续配置 -->
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>

再次运行这个问题就解决啦,但是运行会有其他错误要解决,让我们来看看下一个问题

三、DataSource: 'url' 报错

报错内容如下

这个需要分两步走

(1)第一步:检查自己数据库配置正确、依赖配置正确

这个你们自己检查好好就行啦,博主要主要讲解第二步!

主要是application.yml配置和pom.xml相关依赖问题

application.yml配置

server:
  port: 8082
spring:
  datasource:
    url: jdbc:mysql://175.27.194.97:3306/Sensor2?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: 不告诉你
    password: 不告诉你
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      minimum-idle: 5
      idle-timeout: 30000
      maximum-pool-size: 10
      pool-name: HikariCP
      max-lifetime: 2000000
      connection-timeout: 30000

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

pom.xml相关依赖问题

把这几个一股脑导进去就行(如果有问题的话可以需要看看看看版本兼不兼容问题哦)

 <!--mysql数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <!--JDBC依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--外部jar包-->
        <dependency>
            <groupId>rk.netDevice</groupId>
            <artifactId>NetDeviceSDKP2</artifactId>
            <version>V2.2.7</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/NetDeviceSDKP2_V2_2_7.jar</systemPath>
        </dependency>
        <!-- Mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

(2)第二步:配置pom.xml依赖手动把application.yml依赖打进去

如果反复确认过自己的配置和依赖一点问题都没有,但是还是报错,那么我们检查jar包发现没有application.yml文件,那就是没有打进去

我们手动打一下,跟上面外部jar包未导入报错处理方式十分相同

需要在<build></build>目录中编写<resources></resources>实现指定要在jar中输出的东西

 <resources>
        <!--src/main/resources任何在这个目录中的文件都会被包含在最终的 JAR 文件中-->
            <resource>
                <directory>src/main/resources</directory> <!-- 确保 src/main/resources 目录包含在 JAR 中 -->
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
<!--             如果还有其他资源文件夹,比如 lib 文件夹,则也可以继续配置 -->
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>

四、占用端口报错

怎么还有问题呢,真烦,让我们来看第四个问题!

这个问题是最简单的

直接在application.yml文件中换一个端口就行

然后成功运行,大功告成

以上四个问题都是博主经历过的(也不知道打个jar为啥会碰到这么多问题),诶个问题都踩了一个雷,希望大家看了这篇博客会对大家有帮助!!!

五、完整pom.xml配置模板

一下是一个pom.xml配置模板(汇集了上述问题的解决方案),大家需要可以直接拿去用呀

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>Sensor2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Sensor2</name>
    <description>Sensor2</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mysql数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <!--JDBC依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--外部jar包-->
        <dependency>
            <groupId>rk.netDevice</groupId>
            <artifactId>NetDeviceSDKP2</artifactId>
            <version>V2.2.7</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/NetDeviceSDKP2_V2_2_7.jar</systemPath>
        </dependency>
        <!-- Mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.xmlunit</groupId>
            <artifactId>xmlunit-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.0</version>
        </dependency>

    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <!-- 这通常用于确保版本的一致性和可维护性 -->
                <version>${spring-boot.version}</version>
                <configuration>
                     <!--主属性,指定应用的主类-->
                    <mainClass>com.example.sensor2.Sensor2Application</mainClass>
<!--                    <skip>true</skip>-->
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <!--每个标签定义了一组要包含在构建输出中的资源文件-->
        <resources>
        <!--src/main/resources任何在这个目录中的文件都会被包含在最终的 JAR 文件中-->
            <resource>
                <directory>src/main/resources</directory> <!-- 确保 src/main/resources 目录包含在 JAR 中 -->
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
<!--             如果还有其他资源文件夹,比如 lib 文件夹,则也可以继续配置 -->
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>

    </build>
</project>

标签:lib,包未,Jar,boot,jar,报错,spring,org
From: https://blog.csdn.net/m0_73450461/article/details/143078993

相关文章

  • flume传输数据报错“Space for commit to queue couldn‘t be acquired. Sinks are li
        最近在写一个数据量比较大的项目时候,需要使用flume将kafka中的数据传输到HDFS上进行存储,方便后续的数仓搭建,但是flume在传输数据中却报错如下日志org.apache.flume.ChannelFullException:Spaceforcommittoqueuecouldn'tbeacquired.Sinksarelikelynot......
  • 启动service报错ORA-44317: database open read-only
    ADG(RAC)备库环境,srvctl添加service服务成功,启动service时报错ORA-44317:databaseopenread-only。这是预期行为,使用“srvctladdservice-d<db_name>-s<service_name>”创建服务时,将在OCR中创建和注册服务,但在使用“srvctlstartservice-d<db_name>-s<service_n......
  • 在vscode上配置maven,打jar包
    1.在Hadoop中安装配置maven环境mvn-v查看是否配置成功2.下载ssh拓展,建立远程连接3.安装了核Maven有关的6个插件在已经安装好SingleNode工作模式的Hadoop节点上,要在CODE上构建Java编程环境,需要安装ExtensionPackForJava插件包,主要安装了核Maven有关的6个插件:点在“S......
  • 《地狱已满2》游戏报错lpk.dll文件丢失怎么办?玩家必看《地狱已满2》遭遇lpk.dll丢失故
    对于热爱《地狱已满2》这款游戏的玩家来说,遇到“lpk.dll文件丢失”的报错信息无疑是一个巨大的困扰。这个错误通常意味着你的系统中缺失或损坏了lpk.dll这个动态链接库(DLL)文件,它是Windows系统的一部分,用于支持某些音频和多媒体功能。游戏运行时可能依赖这个文件,缺乏它会导致游......
  • python: invalid value encountered in divide以及invalid value encountered in doub
    运行命令pythoneqtl_prepare_expression.pydata.tpm.gctdata.reads_count.gct--tpm_threshold0.1--count_threshold2--sample_frac_threshold0.2--normalization_methodtmm--outputdata.txt时出现了报错“invalidvalueencounteredindivide”以及“invalidvalue......
  • java报错大合集
    ​ D:\代码\Mybatis-84\src\test\java\com\lu\TestNews.java:100:39java:找不到符号 符号: 方法of(int,int) 位置:接口java.util.List解决idea中的jdk变成1..8了而List.of()是9出的所有报错,改回17 在“classjava.lang.String”中没有名为“name”的属......
  • vue,xlsx,xlsx-style,file-saver,生成Excel并导出,cptable报错,合并单元格 样式缺失
    一,安装依赖 二,导入依赖import*asXLSXfrom'xlsx';import*asXLSX_STYLEfrom'xlsx-style'import{saveAs}from'file-saver';三,解决引入xlsx-style./cptable模块找不到问题Thisrelativemodulewasnotfound:*./cptablein./node_modules......
  • prometheus 报错 Error on ingesting samples that are too old or are too far into
    level=warnts=2021-08-16T03:20:04.960Zcaller=scrape.go:1507component="scrapemanager"scrape_pool=mtailtarget=http://18.167.146.20:3903/metricsmsg="Erroroningestingsamplesthataretoooldoraretoofarintothefuture"num_dro......
  • 07-SQL注入(联合注入、报错注入、盲注)
    1、在不依赖于DVWA后端数据库的情况,如何通过前端验证的方法判断DVWA中的注入点是数字型注入还是字符型注入?(提示:用假设法进行逻辑判断)在dvwa靶场中SQLInjection模块输入1and1=1如果是数字型注入输入内容没有被网站进行任何处理,可以查询到输入内容被网站进行处理,通过隐式......
  • spark运行报错:env: “/home/hadoop/anaconda3/envs/pyspark/bin/python3.8“: 没有那
    在进入spark的过程中,出现报错【env:"/home/hadoop/anaconda3/envs/pyspark/bin/python3.8":没有那个文件或目录】,当时我立马就被搞蒙了,百度了各种方法,最终都没有解决。当然有大佬说“进入conf目录下,修改spark-env.sh文件”,这个方法我也进行了修改,最终在终端输入./bin/pyspar......