如何在Java中不使用集成开发环境(IDE)引入库文件

36

如何在Java程序中不使用NetBeans等IDE导入库?

在NetBeans中,我是这样做的:

Enter image description here

我如何只使用Notepad++Programmer's Notepad实现相同的功能。 尽可能地,我不想使用NetBeans,因为它会过度杀死鸡用牛刀,我只是在处理简单的项目。


1
程序员记事本甚至对维基百科来说都太晦涩了。这是Simon Steele的创作吗? - Peter Mortensen
1
好的,OP已经离开了:"上次出现已经超过8年了"。 - Peter Mortensen
6个回答

40

使用:

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

1
主线程中的异常:"main" java.lang.NoClassDefFoundError: Quizzer 原因是:java.lang.ClassNotFoundException: Quizzer at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) 找不到主类:Quizzer。程序将退出。 - user225269
你的主类有包名吗? - Bala R
@StackOverflowError - 在java命令中,您还需要一个-classpath参数。 - Stephen C
如果您在包含 .java 文件的目录中编译,则可以使用以下命令:java -classpath external.jar:com.mycompany myClass - Halil İbrahim Oymacı
我需要准确地输入“-classpath”还是需要将“classpath”替换为实际路径,例如“E:\ some folder \ my_lib.jar”? - parsecer
@parsecer - 不确定你在问什么。如果你不理解这个答案,我建议你阅读适用于你平台的javajavac命令的Oracle(网页)手册页面。别忘了跟随链接到解释类路径的页面并阅读它。 - Stephen C

19

除了Bala R的帖子外,添加多个文件和位置也是完全可以的...

javac -cp location1/;location2/;file1.jar;file2.jar fileToCompile

注意:

-cp-classpath 是同一个东西。

如果你在Solaris(以及其他一些Unix系统),请将 ';' 改为 ':'。


谢谢最后一句话。我不知道其他发行版的Linux,但对于Ubuntu来说,":"可以代替";"。 - RAZAFINARIVO Hanania

7
所有其他海报都说得很对,您只需要将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文件。
它很轻量级。简单的Ant脚本很简单。它们不会带来太多负担,而且您始终可以使它们变得非常复杂。仅用于构建,它比Maven简单得多。
大多数IDE直接支持Ant。如果您决定回到IDE,大多数都可以使用最少的配置使用您的Ant构建文件。
这是您使用Notepad++解决类路径问题的方法。设置类路径有效,但不够彻底。管理和管理它是一种痛苦。学习Ant的基础知识将带您更远,工作量最小。

2
这可能有效,但把所有的JAR文件都倒入一个地方并不是最佳实践。 - Stephen C

4
您需要将它们放在类路径上,例如: java -classpath someJar.jar YourMainClass 当然,您也可以对javac执行相同的操作。
如果您需要在类路径上有多个JAR文件或目录,则需要使用平台的默认路径分隔符。例如,在Windows上: java -classpath someJar.jar;myJar.jar YourMainClass 顺便说一下,您可能会发现使用IDE来管理这种东西更容易。我个人只使用了一些脚本化的编辑器并且管理得很好。但是,了解如何通过命令行完成这些操作也是很好的。

2
将JAR文件放入你的类路径中。类路径是一个环境变量。

1
我真正想说的是,如果您依赖于CLASSPATH环境变量来查找JAR文件,则存在一种风险,即一个Java应用程序的CLASSPATH设置可能与另一个应用程序所需的设置冲突。虽然这可以得到缓解,但还是容易出问题。更好的方法(减少错误)是编写包装脚本(或自定义启动器)来启动应用程序,或将其转换为“可执行”JAR,该JAR处理其自己的类路径,并使用 java -jar ... 运行它。 - Stephen C
@StephenC 抱歉,我有点沮丧...最终选择了shebang java源代码。FOO=bar java...在技术上是一个环境变量,但在我的脑海中它是一个无害的参数。env代表环境...修改大型环境以操纵大型租户是个坏主意...我认为CLASSPATH=. java并不比java -classpath .更糟糕。 - Ray Foss
我同意这一点。但这并不是典型的Linux / Windows / Java初学者设置CLASSPATH的方式。 - Stephen C

1

请确保JAR文件在您的类路径中,并且您有import语句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接