如何使用.jar文件中的类?

Gau*_*nia 126 java jar

我阅读了Sun for 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.

Gab*_*leV 167

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

你的来源在文件中mysource.java像这样:

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}
Run Code Online (Sandbox Code Playgroud)

首先,如您所见,在您的代码中,您必须导入类.要做到这一点,你需要import org.example.Classname;

其次,在编译源代码时,必须引用jar文件.

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

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

现在你可以运行这个:

  • 你能解释一下这种符号吗?这解决了我的问题,但不幸的是我没有IDEA分号/冒号在这种特殊情况下的含义. (4认同)
  • 这个分号/冒号的故事让我花了一整天的时间。至少我现在找到了,谢谢! (2认同)
  • @ChaseMeadors [分号](http://technet.microsoft.com/en-us/library/cc772047.aspx) / [colon](http://www.gnu.org/software/bash/manual/bashref. html#index-PATH) 在这里基本上意味着“和”。它将 `.` 与 `org.example.jar` 分开。 (2认同)
  • 我认为使用包名称作为 jar 名称会令人困惑。只使用“example.jar”怎么样? (2认同)

Ade*_*ari 34

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

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

import org.xml.sax.SAXException;
Run Code Online (Sandbox Code Playgroud)

如果您正在使用IDE,那么您应该参考其文档.或者至少在这个帖子中指定你在这里使用的是哪一个.它肯定会使我们能够进一步帮助你.

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

java -jar my_program.jar
Run Code Online (Sandbox Code Playgroud)

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


kgi*_*kis 14

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

javac -cp .;jwitter.jar MyClass.java
Run Code Online (Sandbox Code Playgroud)

要运行代码(假设MyClass包含main方法):

java -cp .;jwitter.jar MyClass
Run Code Online (Sandbox Code Playgroud)

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


wor*_*ad3 6

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


Jon*_*eet 6

正如workmad3所说,你需要jar文件在你的类路径中.如果您正在从命令行进行编译,那将意味着使用-classpath标志.(避免使用CLASSPATH环境变量;这是颈部IMO的痛苦.)

如果您使用的是IDE,请告诉我们哪一个,我们可以帮助您完成该IDE的特定步骤.