我喜欢将我所有的第三方库放在 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 开发环境。
此外,这些类是否与小程序捆绑在一起?
如果您的程序最终将成为一个小程序,那么是的,您需要将 jxl.jar 与您的程序一起分发——人们不会在他们的计算机上拥有它,也不会想要自己下载它. 我不打算在这里描述如何制作小程序。网络上有很多资源。谷歌搜索并返回有关您遇到的问题的更具体问题。
当我编译一个java程序时,即使他们没有在运行它的机器上安装这个特定的包,该文件的接收者是否能够运行它?
jxl 库不会编译到您的程序中。您将需要以某种方式将 jxl 库连同您的程序一起交付给您的用户。您可能应该将您的程序捆绑到一个 JAR 中,因为大多数重要程序包含多个 Java 类,这意味着您的程序将包含多个 .class 文件。有很多方法可以解决这个问题。花一些时间阅读有关如何创建小程序的资源,然后带着更具体的问题回到 stackoverflow。