【发布时间】:2011-07-04 00:18:24
【问题描述】:
如何在不使用像 Netbeans 这样的 IDE 的情况下在我的 java 程序中导入库? 在 Netbeans 中,我这样做:
我怎样才能通过只使用记事本++ 或程序员的记事本来实现相同的目标。 我尽可能不想使用 Netbeans,因为我只处理简单的项目,所以它会有点过分。
【问题讨论】:
如何在不使用像 Netbeans 这样的 IDE 的情况下在我的 java 程序中导入库? 在 Netbeans 中,我这样做:
我怎样才能通过只使用记事本++ 或程序员的记事本来实现相同的目标。 我尽可能不想使用 Netbeans,因为我只处理简单的项目,所以它会有点过分。
【问题讨论】:
你应该把它们放在你的类路径中,比如
java -classpath someJar.jar YourMainClass
当然,您也可以对 javac 执行相同操作。
如果您的类路径中需要有多个 jar 或目录,则需要使用平台的默认路径分隔符。例如,在 Windows 上,
java -classpath someJar.jar;myJar.jar YourMainClass
顺便说一句,您可能会发现使用 IDE 来管理这类东西更容易。我个人只使用了我的稍微可编写脚本的编辑器并且管理得很好。但是很高兴知道如何通过命令行来做这些事情。
【讨论】:
javac -classpath external.jar myClass.java
编辑:
如果你的主类在一个包中
package com.mycompany;
public class myClass
{
...
...
然后
你需要
javac -classpath external.jar com/mycompany/myClass.java
和
运行
java -classpath external.jar com.mycompany.myClass
【讨论】:
java 命令上使用 -classpath 参数。
java -classpath external.jar:com.mycompany myClass
-classpath 还是需要用E:\some folder\my_lib.jar 之类的实际路径替换“类路径”??
所有其他海报都在现场,您只需将 jar 添加到您的类路径。
Java 提供了许多设置类路径的机制,包括通过命令行、通过环境变量以及通过在可执行 Java jar 文件的 MANIFEST.MF 中进行设置。
这些都是难以管理的。了解技术并了解基础知识是很好的。但实际使用它们确实是个坏主意。
你应该做的是这个。
首先,将所有 Java 库放在系统上的一个位置。 C:\java\libraries 或其他。您记得的某个地方,您的所有项目都可以访问的某个地方。
接下来,使用它们的版本号命名所有库。如果您使用 log4j v1.4.1,则将 jar 放在库区域的 log4j-1.4.1 目录中。这为您提供了“免费”的库版本控制。
最后,学习 Ant。对于简单的项目,Ant 很简单。使用 Ant build.xml 文件编译、测试和运行您的应用程序。
为什么?几个原因。
因为一旦设置好,向您的项目添加一个新库是微不足道的,您可以在 build.xml 中添加一行。 Ant 让您可以更轻松地处理简单的抽象(例如所有库所在的位置)。
build.xml 是自包含的。例如,如果您为类路径使用环境变量,那么一个项目的类路径可能与另一个项目的类路径不同。这意味着重置环境变量。继续这个,你最终会因为你的类路径设置错误而发誓它“以前工作过”的一些“新问题”。在build.xml中设置一次,忘记了。
Ant 是便携式的。它在 Windows、Linux、Mac、AS/400 上运行相同,它在 Java 运行的任何地方运行,与 shell 脚本或 BAT 文件不同。
它很轻。简单的蚂蚁脚本很简单。他们不会带很多行李,你总是可以让他们变得可怕复杂。对于构建而言,它比 Maven 简单得多。
大多数 IDE 直接支持 Ant。如果您决定回到 IDE,大多数人只需使用最少配置的 ant 构建文件即可。
这就是使用 notepad++ 解决类路径问题的方法。设置类路径是可行的,但还远远不够,管理起来很痛苦。学习 Ant 的基础知识会让您以最少的工作走得更远。
【讨论】:
除了@StackOverflowException 的帖子之外,添加多个文件和位置也完全可以......
javac -cp location1/;location2/;file1.jar;file2.jar fileToCompile
注意事项::
-cp 和 -classpath 是一回事。 如果您使用的是 Solaris(和其他一些 UNIX 版本),请更改 ';'到':'
【讨论】:
确保 jar 文件在你的类路径中并且你有 import 语句。
【讨论】:
把jar放到你的classpath中,classpath是一个环境变量
【讨论】:
CLASSPATH 环境变量来查找 JAR,那么一个 Java 应用程序的 CLASSPATH 设置存在与设置冲突的风险需要另一个。这可以减轻,但它很容易绊倒你。更好的方法(更不容易出错)是编写包装脚本(或自定义启动器)来启动应用程序,或者将其转换为处理自己的类路径的“可执行”JAR,并使用java -jar ... 运行它跨度>
FOO=bar java... 在技术上是一个环境变量,但在我看来,它是一个良性参数。 env 代表环境...修改大型环境以操纵大型租户,这是个坏主意...我认为CLASSPATH=. java 并不比java -classpath . 差