Java 从jar文件运行类

Java 从jar文件运行类,java,jar,opencsv,Java,Jar,Opencsv,我将opencsv jar添加到我的类路径中 我的代码如下: import java.io.File; import java.io.FileReader; import java.io.FileOutputStream; import com.opencsv.CSVReader; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.util.Scanner; public class CreateDocument

我将opencsv jar添加到我的类路径中

我的代码如下:

import java.io.File;
import java.io.FileReader;
import java.io.FileOutputStream;

import com.opencsv.CSVReader;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.util.Scanner;

public class CreateDocument
{
    public static void main(String[] args)throws Exception
    {
        CSVReader reader = new CSVReader(new FileReader("invoicedetails.csv"));
        String [] nextLine;
        while ((nextLine = reader.readNext()) != null) {
            // nextLine[] is an array of values from the line
            System.out.println(nextLine[0] + nextLine[1] + nextLine[2]);
        }
    }
}
现在,当我尝试从命令行运行jar时,问题就出现了,我通过单击build->build artifacts来创建jar 我在命令行中收到以下消息:

为了更加清晰,我的解决方案在IntelliJ中是这样的:

jar文件只包含在IDE项目中编写的类。您需要在java命令中指定包含所有依赖项的类路径


java-classpath=“PATH\u TO\u OPENCSV”-jar InvoiceBuilder.jar

正如其他人指出的那样,您缺少所创建jar中的依赖项。你可以在Idea中创建一个“胖”罐子。看见这篇文章很旧,但也应该适用于新版本。

看到了吗?从命令行启动应用程序时需要设置类路径。在我的示例中,这是:java-classpath InvoiceBuilder.jar com.creaw.CreateDocument,对吗?输入此项会产生相同的错误结果,这取决于jar所在的位置,即如果它不在本地目录中,则还需要路径。你还需要所有其他的jar(从你的截图上看是5个)。我如何将它们嵌入jar文件中,这样我就不必再输入了?我只是不想用java-jar InvoiceBuilder.jar运行jar,我不是IntelliJ用户,但可能有办法创建一个包含所有依赖项的jar。检查jar中的META-INF/MANIFEST.MF文件。如果存在类路径属性,则需要将依赖项jar复制到同一文件夹结构中。(通常在lib内部)清单文件只包含以下行:清单版本:1.0主类:com.creaw.CreateDocument因此我添加了类路径:com.opencsv行,但错误仍然存在