java引用本地jar包报错

由于项目要做阿里会员通,所以定制了taobao的sdk,需要在工程中手动引入,文件路径如下:

开发工具使用的idea,所以使用idea的配置引入jar包,配置如下:

但是工程打包的时候,依旧提示程序包com.taobao.api不存在,报错如下

刚开始是以为缓存的原因,但是清理缓存之后依旧没发解决,最后,决定修改pom文件,引用本地jar包,配置如下:

<dependency>
    <groupId>com.taobao</groupId>
    <artifactId>taobaoapi</artifactId>
    <version>2.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/taobao-sdk-java-auto_1582030266166-20200218.jar</systemPath>
</dependency>

再次打包,发现完美解决

注意:本地jar包不会自动打包,所以修改打包配置,如下

<build>
        <finalName>***</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <!-- 指定打包插件的配置文件位置 -->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <!-- 打jar包时,排除xml和资源文件,因为会将这些文件打到conf目录下 -->
                    <excludes>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.yml</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>/WEB-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>
    </build>

 

Free Spire.XLS for .NET 是e-iceblue公司开发的一款支持对所有Excel格式类型文件进行操作的.NET 控件。它适用于任何类型的应用程序比如ASP.NET Web应用程序或者Windows桌面应用程序。Spire.XLS for .NET允许开发人员创建和管理Excel,而不需要安装Microsoft Excel或者Microsoft Office。相比Microsoft,Spire.XLS for .NET对于开发人员来说是一个更好的选择 - 自动化,安全,稳定,可扩展性延伸,速度快,价格便宜和功能强大。 通过使用Free Spire.XLS for .NET,开发人员可以快速方便的查看,生成,读写以及自定义编辑Excel文件。Spire.XLS for .NET支持Excel 97-2003, Excel 2007, Excel 2010 and Excel 2013。它还支持C#, VB.NET, ASP.NET和 ASP.NET MVC编程语言 作为一款专业,强大,方便易用的控件,Spire.XLS for .NET有一下主要功能: 新建Excel文件,编辑已有的Excel文件,多种保存Excel方式,设置Excel文件属性,文件打印设置,合并,拆分或者拷贝单元格,支持对Excel文件加锁或者加密保护。 Spire.XLS for .NET支持把数据从数据库导出到Excel工作表,或者把数据从Excel数据导入到数据库。 Spire.XLS for .NET 提供强大的功能为开发者设置单元格格式。这次格式化数字,文字缩进,定位调整,设置单元格边线,单元格填充以及保护等。 开发人员可以轻松的利用Spire.XLS for .NET向Excel文件里面写入内容,括超过530多种的公式,70多种表格,支持插入图片,不同类型的文字,链接,注释甚至VBA等。 Spire.XLS for .NET 还允许开发人员将Excel文件转换成PDF, HTML, CSV, Text, XML以及图片格式。 注:下载含有Spire.xls.dll文件以及部分Demo, 你可以调用DLL并参照Demo提供的代码处理Excel文档。
<think>嗯,用户遇到了使用java -jar启动项目时的错误,想要解决方案。首先,我需要根据用户提供的四个引用内容来分析可能的问题和解决办法。 引用[1]提到的是WebServerStartStop错误,可能是因为端口被占用或者Tomcat配置问题。引用[2]和[4]都指向主清单属性缺失,也就是MANIFEST.MF中没有Main-Class,这通常和Maven插件配置有关。引用[3]则是类找不到的问题,可能依赖缺失或打不正确。 用户可能遇到了多个潜在的问题,比如主清单缺失、端口冲突、依赖问题或者打配置错误。我需要把这些情况都考虑到,给出分步骤的解决方案。 首先,主清单缺失是比较常见的问题,应该放在第一位。需要检查pom.xml中的spring-boot-maven-plugin是否正确配置,特别是mainClass是否正确指向启动类。然后,检查打后的jar是否含主清单属性,可以通过解压jar查看MANIFEST.MF或者使用jar tf命令。 接下来,如果是端口被占用,可以用netstat或者lsof命令查找占用端口的进程并终止。另外,Spring Boot的配置文件中可能设置了错误的端口,需要检查application.properties或application.yml。 依赖问题的话,用户可能需要检查是否所有依赖都正确打jar,特别是使用spring-boot-maven-plugin的repackage目标。如果依赖缺失,可能需要使用mvn clean install重新打,或者考虑使用依赖分离的方式,用lib文件夹存放依赖。 还有类找不到的情况,比如ClassNotFoundException,这时候要确认打时依赖是否正确,尤其是多模块项目中子模块的依赖是否被打进去。反编译jar或者检查BOOT-INF/classes下的内容可能有帮助。 此外,其他可能性比如JDK版本不兼容、资源文件缺失或环境变量问题也需要提及。例如,使用java -jar时指定JDK版本,或者检查resources目录下的配置文件是否存在。 用户可能需要逐步排查,从主清单开始,再到端口和依赖,最后处理其他潜在问题。给出具体的命令示例和配置示例会更有帮助,比如pom.xml的配置代码,以及解压jar的命令。这样用户能一步步跟着操作,找到问题所在。 最后,生成的相关问题可以涵盖这些排查步骤,比如如何检查端口占用、依赖冲突的解决方法,以及多模块项目的打注意事项,帮助用户进一步深入解决问题。</think>### 解决方案:java -jar 启动项目报错分析及修复步骤 #### 一、主清单属性缺失(最常见错误) **现象**:报错`xxx.jar中没有主清单属性` **原因**:JAR的`META-INF/MANIFEST.MF`文件中缺少`Main-Class`定义,无法定位启动类[^2][^4]。 **解决方法**: 1. **检查Maven插件配置**:在`pom.xml`中确认`spring-boot-maven-plugin`配置正确,且`<mainClass>`指向项目启动类全路径。 ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.MainApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> <!-- 必须含此目标 --> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 2. **重新打验证**: ```bash mvn clean package java -jar target/xxx.jar ``` 3. **手动检查清单文件**: ```bash unzip -p xxx.jar META-INF/MANIFEST.MF | grep Main-Class ``` --- #### 二、WebServer启动失败(端口冲突或依赖缺失) **现象**:报错`Failed to start bean 'webServerStartStop'`或`Unable to start embedded Tomcat`[^1][^3]。 **解决方法**: 1. **检查端口占用**: ```bash # Linux/Mac lsof -i :8080 # Windows netstat -ano | findstr 8080 ``` 修改`application.properties`中的端口: ```properties server.port=9090 ``` 2. **验证依赖完整性**: - 检查`BOOT-INF/lib`目录是否含所有依赖(解压JAR查看) - 若使用多模块项目,确保子模块已正确安装到本地仓库 - 重新生成依赖树: ```bash mvn dependency:tree ``` --- #### 三、类找不到异常(ClassNotFoundException) **现象**:报错`java.lang.ClassNotFoundException` **原因**:依赖未正确打或资源文件缺失[^3]。 **解决方法**: 1. **检查打配置**: - 确认`<packaging>jar</packaging>` - 检查`<dependencies>`中是否遗漏关键依赖 2. **反编译验证**:使用JD-GUI工具打开JAR,检查`BOOT-INF/classes`中是否存在启动类 --- #### 四、其他常见问题 1. **JDK版本不匹配**: ```bash java -version # 需与项目编译版本一致 ``` 2. **资源文件路径错误**:检查`src/main/resources`下的配置文件是否被正确打 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值