假设使用joda
,例如
package com.domain.testPackage;
public class MyObject
{
public static void main(String[] args)
{
System.out.println((new org.joda.time.DateTime()).toString());
}
}
可以通过
从Eclipse(Neon)导出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
似乎只有第一次运行是正确的。为什么第二次调用会运行?
BTW:注意应引用java
通配符*,以便Linux不扩展通配符。而是将通配符逐字传递给java
,并采用特定于Java的含义“所有JAR文件”。请注意,它也可以在没有引号的情况下工作。我说你应该引用它,而不是你需要的。它的工作原理是因为Linux glob不太可能找到一个文件名,除了其他细节之外,中间有一个冒号,如testProject.jar:testProject_lib/*
和零匹配的副作用是glob会方便(或奇怪吗?)回显整个令牌,java
将看到回显的令牌并以Java方式解释它。
答案 0 :(得分:1)
Class-Path: . testProject_lib/joda-time-2.9.2.jar
在清单中找到了。这解释了它。