在Eclipse中运行Maven“编译”,“安装”命令以创建可执行JAR并继续运行该JAR之后,出现以下错误
Error: Unable to initialize main class org.example.project.StockTracker`
Caused by: java.lang.NoClassDefFoundError: com/mashape/unirest/http/exceptions/UnirestException
我不知道发生了什么事。我该如何解决?以下是更多详细信息。我用主要类信息更新了POM,并将类路径设置为“ true”。
主要类别代码
package org.example.project;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class StockTracker {
public static void main (String[] args) throws UnirestException, InterruptedException {
HttpResponse<String> response = Unirest.get("https://apidojo-yahoo-finance-v1.p.rapidapi.com/market/get-quotes?region=US&lang=en&symbols=TSLA")
.header("x-rapidapi-host", "apidojo-yahoo-finance-v1.p.rapidapi.com")
.header("x-rapidapi-key", "api-key")
.asString();
//System.out.println(response.getBody());
System.out.println("response.getBody()");
}
}
UNIREST例外类别代码
package com.mashape.unirest.http.exceptions;
public class UnirestException extends Exception {
private static final long serialVersionUID = -3714840499934575734L;
public UnirestException(Exception e) {
super(e);
}
public UnirestException(String msg) {
super(msg);
}
}
JAR中的清单文件
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.6.3
Built-By: Author
Build-Jdk: 13.0.1
Class-Path: unirest-java-1.4.9.jar httpclient-4.5.2.jar httpcore-4.4.4.j
ar commons-logging-1.2.jar commons-codec-1.9.jar httpasyncclient-4.1.1.
jar httpcore-nio-4.4.4.jar httpmime-4.5.2.jar json-20160212.jar
Main-Class: org.example.project.StockTracker
问题来源:Stack Overflow
在@IlyaSenko的帮助下,我设法弄清楚了。我需要将我所有的JAR依赖关系都包含在实际的JAR中,而不是简单地在POM文件中声明依赖关系。我通过以下更新了我的POM以实现此目标。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>org.example.project.StockTracker</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
然后使用Maven“ mvn clean compile assembly:single ”
执行以下命令,该命令将所有JAR捆绑到一个可执行JAR中。之后,JAR工作了
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。