在java-classpath中写什么路径?
What path to write in java -classpath?
我有一个包含许多文件和目录的包(Californium,一种 CoAP 协议实现)。它作为一个 Maven 项目出现。我已经转到终端中的 pom.xml 文件和 运行 mvn package
的目录。一切顺利。但是在转到其中一个示例 (Helloworldserver.class) 并尝试使用 java HelloWorldServer
对其进行 运行 时,我得到:
Error: Could not find or load main class HelloWorldServer
。
我通过键入 echo $CLASSPATH
查看了类路径,但我什么也没得到。所以我尝试设置类路径:
java -classpath org.eclipse.californium.examples
它生成对 java 命令可用的所有可能选项的描述,并且不设置类路径。
我在上面的命令中选择了类路径,因为在HelloWorldServer.java中,有第一行:
package org.eclipse.californium.examples;
根据我的命令输出判断,我怀疑这是错误的。如何指定路径的正确方法?我要指什么?
当您使用 Maven 构建代码时,它会创建一个 "target" 目录,并在其中创建一个 "classes" 目录树,其中包含编译器生成的 class 文件。
找到 "target/classes" 目录或任何它的名字。 (它在标准 Maven 文件结构中称为 "target/classes",但 POM 文件可以另外指定。)
现在 运行 应用程序是这样的:
$ java -classpath target/classes:<dependency-1>:<dependency-2>:... \
org.eclipse.californium.examples.HelloWorldServer
其中 <dependency-1>
和 <dependency-2>
等是依赖 JAR 文件的路径名...由 Maven 下载到本地 .m2
存储库。
-classpath
参数是冒号分隔的1 目录名列表、jar/zip 文件名或jar/zip 的一般模式文件模式。如果您 运行 反对 class 尚未打包成 JAR 或 ZIP 文件的文件,则需要提供 class 树的根目录。例如,如果您的 HelloWorldServer
class 的全名是
org.eclipse.californium.examples.HelloWorldServer
那么目标目录树将如下所示:
...
target:
classes:
org:
eclipse:
californium:
examples:
HelloWorldServer.class
"target/classes" 是正确的根目录。 java
命令将尝试根据包命名导航到 "HelloWorldServer.class" 文件。
不要被诱惑这样做:
$ java -classpath target/classes/org/eclipse/californium/examples:... \
HelloWorldServer.class
不行。
1 - 或 Windows 上的分号。
我有一个包含许多文件和目录的包(Californium,一种 CoAP 协议实现)。它作为一个 Maven 项目出现。我已经转到终端中的 pom.xml 文件和 运行 mvn package
的目录。一切顺利。但是在转到其中一个示例 (Helloworldserver.class) 并尝试使用 java HelloWorldServer
对其进行 运行 时,我得到:
Error: Could not find or load main class HelloWorldServer
。
我通过键入 echo $CLASSPATH
查看了类路径,但我什么也没得到。所以我尝试设置类路径:
java -classpath org.eclipse.californium.examples
它生成对 java 命令可用的所有可能选项的描述,并且不设置类路径。
我在上面的命令中选择了类路径,因为在HelloWorldServer.java中,有第一行:
package org.eclipse.californium.examples;
根据我的命令输出判断,我怀疑这是错误的。如何指定路径的正确方法?我要指什么?
当您使用 Maven 构建代码时,它会创建一个 "target" 目录,并在其中创建一个 "classes" 目录树,其中包含编译器生成的 class 文件。
找到 "target/classes" 目录或任何它的名字。 (它在标准 Maven 文件结构中称为 "target/classes",但 POM 文件可以另外指定。)
现在 运行 应用程序是这样的:
$ java -classpath target/classes:<dependency-1>:<dependency-2>:... \
org.eclipse.californium.examples.HelloWorldServer
其中 <dependency-1>
和 <dependency-2>
等是依赖 JAR 文件的路径名...由 Maven 下载到本地 .m2
存储库。
-classpath
参数是冒号分隔的1 目录名列表、jar/zip 文件名或jar/zip 的一般模式文件模式。如果您 运行 反对 class 尚未打包成 JAR 或 ZIP 文件的文件,则需要提供 class 树的根目录。例如,如果您的 HelloWorldServer
class 的全名是
org.eclipse.californium.examples.HelloWorldServer
那么目标目录树将如下所示:
...
target:
classes:
org:
eclipse:
californium:
examples:
HelloWorldServer.class
"target/classes" 是正确的根目录。 java
命令将尝试根据包命名导航到 "HelloWorldServer.class" 文件。
不要被诱惑这样做:
$ java -classpath target/classes/org/eclipse/californium/examples:... \
HelloWorldServer.class
不行。
1 - 或 Windows 上的分号。