java 类路径意外地找到了一个库
java classpath is finding a library unexpectedly
假设 joda
的任何简单使用,例如
package com.domain.testPackage;
public class MyObject
{
public static void main(String[] args)
{
System.out.println((new org.joda.time.DateTime()).toString());
}
}
jar
可以通过
从 Eclipse (Neon) 导出
File>Export>Java/Runnable Jar>Next>"Copy required libraries into a sub-folder"
java
的以下两个调用都将 运行。
java -cp testProject.jar:testProject_lib/'*' com.domain.testPackage.MyObject
java -cp testProject.jar com.domain.testPackage.MyObject
好像只有第一个运行是对的。为什么第二次调用 运行?
顺便说一句:注意 java
通配符 * 应该被引用,这样 Linux 就不会扩展通配符。相反,通配符逐字传递给 java
并采用 Java 特定的含义,即 "all the JAR files"。请注意,它也可以在没有引号的情况下工作。我说你应该引用它,而不是你需要引用它。它之所以有效,是因为 Linux glob 不太可能找到一个文件名,除其他细节外,中间有一个冒号 testProject.jar:testProject_lib/*
并且进行零匹配的副作用是 glob 将方便地(还是奇怪?)回显整个标记,java
将看到回显的标记并以 Java-fashion 解释它。
Class-Path: . testProject_lib/joda-time-2.9.2.jar
这是在清单中找到的。这就解释了。
假设 joda
的任何简单使用,例如
package com.domain.testPackage;
public class MyObject
{
public static void main(String[] args)
{
System.out.println((new org.joda.time.DateTime()).toString());
}
}
jar
可以通过
File>Export>Java/Runnable Jar>Next>"Copy required libraries into a sub-folder"
java
的以下两个调用都将 运行。
java -cp testProject.jar:testProject_lib/'*' com.domain.testPackage.MyObject
java -cp testProject.jar com.domain.testPackage.MyObject
好像只有第一个运行是对的。为什么第二次调用 运行?
顺便说一句:注意 java
通配符 * 应该被引用,这样 Linux 就不会扩展通配符。相反,通配符逐字传递给 java
并采用 Java 特定的含义,即 "all the JAR files"。请注意,它也可以在没有引号的情况下工作。我说你应该引用它,而不是你需要引用它。它之所以有效,是因为 Linux glob 不太可能找到一个文件名,除其他细节外,中间有一个冒号 testProject.jar:testProject_lib/*
并且进行零匹配的副作用是 glob 将方便地(还是奇怪?)回显整个标记,java
将看到回显的标记并以 Java-fashion 解释它。
Class-Path: . testProject_lib/joda-time-2.9.2.jar
这是在清单中找到的。这就解释了。