【问题标题】:Don't understand why I'm getting the Error: Could not find or load main class from console [duplicate]不明白为什么我收到错误:无法从控制台找到或加载主类 [重复]
【发布时间】:2013-10-30 23:40:39
【问题描述】:

我查看了该网站上的其他几个答案,试图了解为什么会发生这种情况,但我不明白我做错了什么。

我正在尝试开始使用 iText 和一般的 .jar 文件。我将 iText .jar 文件下载并解压缩到桌面上的一个文件夹中:Desktop\Java\itext-5.4.4\"jar files here"

然后我去了以下网站:

http://tutorials.jenkov.com/java-itext/getting-started.html

并将代码复制到记事本中。它看起来像这样:

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.FileNotFoundException;

/**

 */
public class HelloWorldExample {

    public static void main(String[] args) {

        Document document = new Document();

        try {
            PdfWriter.getInstance(document,
                new FileOutputStream("HelloWorld.pdf"));

            document.open();
            document.add(new Paragraph("A Hello World PDF 

document."));
            document.close(); // no need to close 

PDFwriter?

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

我在桌面上将文件保存为 HelloWorldExample.java

然后我用以下命令编译我的代码:

cd c:\桌面

javac -classpath Java\itext-5.4.4\itextpdf-5.4.4.jar HelloWorldExample.java

编译成功

然后我尝试了:

java -classpath Java\itext-5.4.4\itextpdf-5.4.4.jar HelloWorldExample

我得到错误:无法找到或加载主类 HelloWorldExample 错误。

我已经尝试了很多变体,包括创建一个文件夹、在该文件夹中放置一个 lib 文件夹以及创建一个包,但仍然得到相同的错误。

这里发生了什么?

谢谢!

【问题讨论】:

  • 你确定 HelloWorldExample.class 在 java 命令的 -classpath 选项指定的类路径中吗?
  • @crybird 我的 HelloWorldExample.class 不在 classpath 命令指定的目录中 - 它被编译到与 .java 文件相同的目录,即桌面。我尝试选择 .class 文件并将其移动到该文件夹​​ - 同样的错误。我只是使用this 建议的命令,这似乎暗示了这一点——我不知道是否有一些系统变量导致问题或什么。
  • 您指定的类路径必须包含您编译的类。

标签: java jar classpath itext


【解决方案1】:

你试过了:

java -classpath Java\itext-5.4.4\itextpdf-5.4.4.jar HelloWorldExample

你会得到错误:无法找到或加载主类 HelloWorldExample 错误。

HelloWorldExample 在类路径中被寻找。您明确地将类路径设置为仅在 Java 调用中包含 iText jar。由于 iText jar 肯定不包含您的 HelloWorldExample, 它显然无法找到。

我假设您在某些 Windows 操作系统上工作(考虑到您选择的路径分隔符)。因此,您应该尝试这样的方法来在您的 Java 调用中包含当前目录 c:\desktop

java -classpath Java\itext-5.4.4\itextpdf-5.4.4.jar;. HelloWorldExample

java -classpath Java\itext-5.4.4\itextpdf-5.4.4.jar;c:\desktop HelloWorldExample

【讨论】:

  • 这行得通,谢谢 - 但是,javac 命令不需要冒号 - 我认为这很奇怪。
  • 当你编译那个源文件时,它的文件名是调用的参数。当你运行它时,它不再是一个文件名,而是一个可以在某个地方找到的类名。
猜你喜欢
  • 2021-08-13
  • 2012-11-02
  • 1970-01-01
相关资源
最近更新 更多