我正在学习maven,但我在导入依赖项时面临问题,以下是我的pom.xml文件
interface Fn2 {
(value: number): number;
}
// `example3` errors as function return type is inferred to be `number | undefined` which is incompatible with the expected `number` return type.
var example3: Fn2 = function(value) {
if (value === -1) {
return undefined;
}
return value;
};
以下是我的java文件
<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
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.app</groupId>
<artifactId>myapp</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
</dependencies>
</project>
我使用 mvn compile 编译并使用 mvn package 创建了jar,两者都没有任何错误。但是当我使用命令
运行应用程序时import org.apache.commons.net.ftp.FTPClient;
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
FTPClient ftp = new FTPClient();
}
}
显示以下错误
java -cp target/myapp-1.0-SNAPSHOT.jar com.myapp.app.App
答案 0 :(得分:4)
它给出application.scss
错误的原因是,当你打包它时,它不会创建一个 fat / uber jar和jar文件,其中noclassfound
存在,这不是你FTPClient
的一部分,因此你得到 noclassfounderror 。
Maven Assembly Plugin 可帮助您创建一个胖jar(包括依赖项)jar并创建一个可运行的jar,您可以在其中为您的FQCN提供myapp-1.0-SNAPSHOT.jar
方法。因此,当您运行fat jar时,它将具有所有依赖项,并且您的程序将正常运行。
在pom.xml中包含以下插件并运行Main
命令。
mvn package
注意: - 此处使用您的完全限定类名更改 mainclass 。
如果它不起作用,请告诉我。
答案 1 :(得分:0)
我能够解决问题,将一些代码添加到pom.xml
这里是我添加的代码
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>dependency/</classpathPrefix>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<useBaseVersion>false</useBaseVersion>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
编译并运行项目后,它可以完美运行。
当我使用mvn compile
时,它只是编译我的主类,但它没有组合依赖项。这就是为什么当我尝试运行JAR文件时它会给出错误ClassNotFound
,为此您需要添加mvn plugin copy-dependencies
并添加执行标记以执行mvn命令{{1} }