问题 java中的类路径究竟是什么?


我写了一个完全适用于我的笔记本电脑的程序,但我真的希望它可以在我拥有的服务器上运行。 使用NetBeans,我已经清理并建造了这个项目。我在我的服务器上复制了文件夹dist的内容,但似乎无法使用命令开始工作

java -jar nameOfFile.jar

我收到了错误

java.lang.NoClassDefFoundError: org/....

我一直在做一些阅读,从我收集到的是,我需要几乎指定我使用的库所在的位置。好吧,它们位于一个名为lib的子文件夹中。

题:

那么为了能够运行我的jar,我需要做什么?


6794
2018-03-08 05:23


起源



答案:


试试看:

java -classpath "$CLASSPATH:nameOfFile.jar:lib/*" path.to.your.MainClass

这样做是将类路径设置为值 $CLASSPATH,加上nameOfFile.jar,再加上所有 .jar 文件 lib/


5
2018-03-08 05:40



-jar和-classpath参数不能一起使用。 - McDowell
@McDowell更正。谢谢。 - Florent Bayle


答案:


试试看:

java -classpath "$CLASSPATH:nameOfFile.jar:lib/*" path.to.your.MainClass

这样做是将类路径设置为值 $CLASSPATH,加上nameOfFile.jar,再加上所有 .jar 文件 lib/


5
2018-03-08 05:40



-jar和-classpath参数不能一起使用。 - McDowell
@McDowell更正。谢谢。 - Florent Bayle


CLASSPATH是一个环境变量,它可以帮助我们从Java Virtual Machine开始搜索.class文件。

我们应该将包层次结构的根存储在CLASSPATH环境变量中。

如果在我们的项目中添加或使用jar库,我们应该将jar文件的位置放在CLASSPATH环境变量中。

例: 如果我们在java项目中使用jdbc mysql jar文件,我们必须更新CLASSPATH环境变量中mysql jar文件的位置。如果我们的mysql.jar在c:\ driver \ mysql.jar中

我们可以在Windows中通过DOS设置类路径

set CLASSPATH=%CLASSPATH%;c:\driver\mysql.jar 

在Linux中我们可以做到

export CLASSPATH=$CLASSPATH:[path of the jar]

希望能帮助到你!


5
2018-03-08 15:17





Q. What is classpath??

答: 类路径 是Java虚拟机或Java编译器中的参数 specifies the location of user-defined classes and packages. 可以在命令行上或通过环境变量设置参数。

classpaths包含:

  1. JAR文件和

  2. 包层次结构顶部的路径。

Q.Why we need to set classpath?

:基本上 classpath tells the location of classes 所有课程都在哪里 位于。

例如 有时我们需要与数据库建立连接,然后我们需要 jdbc mysql connector jar 。

Q. What is JAR?

JAR(Java档案) 是一种通常用于聚合多个的包文件格式 Java class files 以及相关的元数据和资源(文本,图像等)到一个文件中以在Java平台上分发应用程序软件或库。

只是 JAR: Collection of Classes.

所以要做 与数据库连接 我们必须设置的位置 Mysql Jar在java中的Classpath变量中。

这就是为什么我们在java中需要classpath。


3
2018-05-05 07:23





您需要使用设置类路径

以下工作在bash。 这是暂时的

set CLASSPATH=$CLASSPATH=[put the path here for lib]

如果你想要它是永久的,那么你可以在〜/ .bashrc文件中添加上面的行

export CLASSPATH=$CLASSPATH:[put the path here for lib]:.

1
2018-03-08 05:35



你怎么能假设OP正在使用 bash? - maba


当你使用 META-INF / MANIFEST.MF 要指定的文件 主类 必须在。中指定依赖项 表现 太。

-jar开关忽略所有其他类路径信息 - 请参阅 工具 docs for more。


0
2018-03-08 09:00