java 批量导入 java classpath 命令行,
java 批量导入 java classpath 命令行,
java 6 有通配符 , 即使不是java 6 也可以根据 shell的强大功能自动实现 批量
可以替代 ant 了 ,麻烦;;
我自己的案例:
以前用ant :
后来直接用java
java -cp "/home/work/dataio/WEB-INF/lib/*" com.baidu.adcoup.base.task.TaskScheduler Exception in thread "main" java.lang.IllegalArgumentException: The validated expression is false at org.apache.commons.lang.Validate.isTrue(Validate.java:158) at com.baidu.adcoup.base.task.TaskScheduler.main(TaskScheduler.java:12) ========= 结合eclipse的 remote project ( 先学会如何创建 create remote project ,再 到 java 视图下 , 右键项目 , 到 facets , 修改成 java 项目 ) , 可以实现linux 启动 debug 编辑 java ;; 不用再羡慕vim ;; 不用再怕直接调试linux的麻烦 ;; 彻底摆脱部署噩梦 ,执行噩梦;; 彻底摆脱编译噩梦;(依靠svn 同步代码, 但linux上编译整个项目 如何编译呢? ) 彻底摆脱要依靠hudson 自动部署,( 手工部署A 1 .先windos编译 2. scp到linux( 这个过程超级麻烦 ,打包 , sz 手工部署B, 1 先ci代码 2.用svn下载下来, 3.然后借助ant 或者maven 进行 依赖编译 多个java ) ; maven+svn解决了轻量级更新代码+ compile 依赖控制; 或者借助于ant编译普通java项目;; 从此 java 也是 解释性语言, 而且方便的 import 管理 ,比 python等语言高端不少 ; 不用再羡慕 python , 也不要羡慕vim的超多高级功能 ==============================If using Java 6 or later, classpath wildcards are a part of the JVM.
java -cp "Test.jar;lib/*" my.package.MainClass
Key gotchas:
- Use quotes
-
Use
*
only, not*.jar
The above example and gotchas are from other answers on this page. (Thanks davorp et al & Wim Deblauwe)
From the Classpath document section entitled, Understanding class path wildcards:
Class path entries can contain the basename wildcard character
*
, which is considered equivalent to specifying a list of all the files in the directory with the extension.jar
or.JAR
. For example, the class path entryfoo/*
specifies all JAR files in the directory named foo. A classpath entry consisting simply of*
expands to a list of all the jar files in the current directory.A class path entry that contains
*
will not match class files. To match both classes and JAR files in a single directory foo, use eitherfoo;foo/*
orfoo/*;foo
. The order chosen determines whether the classes and resources infoo
are loaded before JAR files infoo
, or vice versa.Subdirectories are not searched recursively. For example,
foo/*
looks for JAR files only infoo
, not infoo/bar
,foo/baz
, etc.The order in which the JAR files in a directory are enumerated in the expanded class path is not specified and may vary from platform to platform and even from moment to moment on the same machine. A well-constructed application should not depend upon any particular order. If a specific order is required then the JAR files can be enumerated explicitly in the class path.
Expansion of wildcards is done early, prior to the invocation of a program's main method, rather than late, during the class-loading process itself. Each element of the input class path containing a wildcard is replaced by the (possibly empty) sequence of elements generated by enumerating the JAR files in the named directory. For example, if the directory
foo
containsa.jar
,b.jar
, andc.jar
, then the class pathfoo/*
is expanded intofoo/a.jar;foo/b.jar;foo/c.jar
, and that string would be the value of the system propertyjava.class.path
.The
CLASSPATH
environment variable is not treated any differently from the-classpath
(or-cp
) command-line option. That is, wildcards are honored in all these cases. However, class path wildcards are not honored in theClass-Path jar-manifest
header.
If you cannot use wildcards, bash
allows
the following syntax (where lib
is
the directory containing all the Java archive files):
java -cp $(echo lib/*.jar | tr ' ' ':')
(Note that using a classpath is incompatible with the -jar
option.
See also: Execute
jar file with multiple classpath libraries from command prompt)
相关文章
- 暂无相关文章
用户点评