140

我阅读了有关 Sun 的 JAR 文件的 Java 教程,但我仍然找不到解决问题的方法。我需要使用一个名为 jtwitter.jar 的 jar 文件中的类,我下载了该文件并尝试执行它(我昨天发现 .jar 文件可以通过双击它们来执行),Vista 给我一个错误说“无法从 [path]/jtwitter.jar 加载 Main-Class Manifest 属性”。

编写 .jar 文件的人要我导入它,但是我在哪里存储 .jar 文件以将其导入我的代码中?我尝试将 .jar 文件和我的 .java 文件放在同一个目录中,但没有用。

我要工作的文件在这里: http: //www.winterwell.com/software/jtwitter.php

我正在使用 JCreator LE。

4

5 回答 5

183

假设我们需要使用Classnamejar 文件中包含的类org.example.jar

您的来源在文件中,mysource.java如下所示:

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}

首先,如您所见,您必须在代码中导入类。为此,您需要import org.example.Classname;

其次,编译源码时,必须引用jar文件。

请注意使用:;编译时的区别

  • 如果您在类似 Unix 的操作系统下:

    javac -cp '.:org.example.jar' mysource.java
    
  • 如果你在windows下:

    javac -cp .;org.example.jar mysource.java
    

在此之后,您获得字节码文件mysource.class

现在你可以运行这个:

  • 如果您在类似 Unix 的操作系统下:

    java -cp '.:org.example.jar' mysource
    
  • 如果你在windows下:

    java -cp .;org.example.jar mysource
    
于 2010-05-12T08:42:24.873 回答
35

并非每个 jar 文件都是可执行的。

现在,您需要在您的 java 文件中导入 jar 下的类。例如,

import org.xml.sax.SAXException;

如果您正在使用 IDE,那么您应该参考它的文档。或者至少指定您在此线程中使用的是哪一个。它肯定会使我们能够进一步帮助您。

如果您没有使用任何 IDE,请查看javac -cp选项。但是,最好将程序打包到一个jar文件中,并在其中包含所有必需jar的 s。然后,为了执行你的jar,比如,

java -jar my_program.jar

你应该有一个META-INF/MANIFEST.MF文件在你的jar. 请参阅此处,了解操作方法。

于 2009-01-20T07:39:05.777 回答
15

您需要在类路径中添加 jar 文件。编译你的java类:

javac -cp .;jwitter.jar MyClass.java

要运行您的代码(前提是 MyClass 包含 main 方法):

java -cp .;jwitter.jar MyClass

您可以在任何地方拥有 jar 文件。如果 jar 文件与您的 java 文件位于同一目录中,则上述工作。

于 2009-01-20T07:41:21.513 回答
8

编译/运行代码时,您需要将 .jar 文件放入类路径中。然后,您只需使用 .jar 中类的标准导入。

于 2009-01-20T07:38:19.490 回答
6

正如 workmad3 所说,您需要将 jar 文件放在类路径中。如果您从命令行编译,这将意味着使用 -classpath 标志。(避免使用 CLASSPATH 环境变量;这对 IMO 来说很痛苦。)

如果您使用的是 IDE,请告诉我们是哪一个,我们可以帮助您执行特定于该 IDE 的步骤。

于 2009-01-20T07:40:38.283 回答