java - 如何在Java中设置和使用类,库,包?

原文 标签 java class

我对使用不是Java固有的外部类库和API的想法还不陌生,我什至不知道我是否在用正确的术语询问正确的问题。所以,让我解释一下我在做什么。

我需要读写Excel文件。我发现具有Java-Excel API的this page。我想安装该API并将其用于我的Java本地实例(C:\java\),因此我可以在创建新程序(例如import jxl.CellView)时导入这些类。我有一个sourceforge的zip文件,但是之后,我就迷路了。

这些说明参考在Eclipse中进行设置。我不喜欢Eclipse作为IDE的爱好者...所以我想知道如何“手动”进行操作。我认为这将有助于我更好地理解它为何以未来的方式运行。

所以,我的下一条指令是...
“要在Java程序中使用此库,请将lib jxl.jar添加到项目中的类路径中。请参见在Eclipse中更改类路径。”是否仅将zip文件解压缩到C:\java?这就是我上课的意思吗?从这里开始需要执行哪些步骤,以确保可以根据需要导入适当的类?

此外,这些类是否与applet捆绑在一起?当我编译Java程序时,即使文件接收者在运行该文件的计算机上未安装此特定软件包,也可以运行该文件?

有人可以给我一些看法吗?

最佳答案

我喜欢将所有第三方库都放在c:\ java \ lib中。这样,我可以将它们与c:\ java中的JRE和JDK分开。这不是严格必要的,但是整理起来很好。以下是一些有关使用您感兴趣的库的说明。

jexcelapi_2_6_12.zip提取到c:\java\lib\

这应该意味着现在存在以下文件:C:\java\lib\jexcelapi\jxl.jar

现在,将您的代码放在c:\java\work中,以使其分开。使用文本编辑器创建文件c:\java\work\MyClass.java

import jxl.CellView;
public class MyClass {
    public static void main(String[] args) {
        System.out.println("I can access " + CellView.class);
    }
}


打开命令提示符,并将目录更改为c:\ java \ work。

cd /d c:\java\work

现在编译该类:

javac -classpath ..\lib\jexcelapi\jxl.jar MyClass.java

如果没有错误,目录现在应该包含一个新文件MyClass.class,它是您的已编译程序。

如果看到错误:
无法将“ javac”识别为内部或外部命令,可操作程序或批处理文件。那么您可以指定javac.exe的完整路径。以下示例假定您在c:\ java \ jdk1.6.0_37中有一个JDK,在您的系统上它可能是正确的,也可能不是。

c:\java\jdk1.6.0_37\bin\javac -classpath ..\lib\jexcelapi\jxl.jar MyClass.java

运行已编译的程序:

C:\java\work>java -classpath ..\lib\jexcelapi\jxl.jar;. MyClass

输出:
我可以访问类jxl.CellView

注意java类路径末尾的分号和点。这会将当前目录添加到类路径,以便java可以找到MyClass.class。使用javac则不需要。

PATH应该只包含目录不同,java的CLASSPATH(或-classpath)可以同时包含文件和目录。当文件出现在类路径中时,它应该是一个JAR。由于JAR只是zip文件,因此有时您还会在类路径中看到ZIP文件。这是非标准的,但可以。 Java将.zip文件视为.jar。如果需要在程序中添加一些第二个库,请使用分号(Windows)或冒号(* nix)分隔文件。

javac -classpath ..\lib\jexcelapi\jxl.jar;..\lib\lib-2.0\lib-2.0.jar MyClass.java

有时,库包含多个jar文件。在这种情况下,您需要将作为库一部分的每个JAR文件添加到类路径。再次,用分号分隔它们。如果这看起来很乏味,您将开始理解为什么人们喜欢使用IDE或Ant与Java而不是命令行命令一起使用。

还有很多事情要学习,例如使用包,使用环境变量CLASSPATH设置类路径而不是使用-classpath命令行参数,将JDK bin目录添加到PATH,将多个条目添加到类路径,创建Shell脚本,使用IDE进行开发,使用Maven / Ant进行构建,制作自己的JAR,从而使重建和重新运行程序变得更加容易。要学习的东西不胜枚举。这篇文章并不是要指示最佳实践,而是让您快速起步并运行。请遵循Internet上发布的Oracle文档和其他最佳实践,以不断改善Java开发环境。

此外,这些类是否与applet捆绑在一起?
如果您的程序最终将成为一个applet,那么是的,您将需要将jxl.jar与您的程序一起分发-人们不会在计算机上拥有它,也不会想要自己下载它。我不会在这里描述如何制作Applet。网络上有很多资源。 Google,并针对您遇到的问题提出了更具体的问题。

当我编译Java程序时,即使文件接收者在运行该文件的计算机上未安装此特定软件包,也可以运行该文件?
jxl库不会被编译到您的程序中。您将需要以某种方式将jxl库与程序一起交付给用户。您可能应该将程序捆绑到一个JAR中,因为大多数不重要的程序都包含一个以上的Java类,这意味着您的程序将包含多个.class文件。有很多方法可以解决此问题。花一些时间阅读有关如何创建applet的资源,然后再回到Stackoverflow并提出更具体的问题。

相关文章:

php - PHP中API的最佳做法:函数还是类?

java - Zimbra邮件服务器-如何为Zimbra邮件服务器创建身份验证证书

java - 如何从Rest API序列化枚举列表

javascript - ScriptManager无法访问

c# - 在类(class)中使用 session /请求应该使用哪种“用法”?

c++ - 指向绑定(bind)函数的指针只能用于调用该函数

jquery - 如何获得一个类的属性?

java - java中未知的循环结果

java - Java中新的ArrayList <int>()失败

java - 在Java中压缩整数数组