首页 > 解决方案 > 类路径中的“.:./*”是什么意思?

问题描述

我有以下脚本可以运行MyDBCreateSchema/MyDBCreateSchema.class以初始化数据库。

java –cp ".:./*" MyDBCreateSchema dbHost 1433 id password DBName

是什么".:./*"

标签: javalinux

解决方案


嗯,第一个“。” 前面的“:”表示当前目录,所以当前目录下的所有.class文件都包括在内。“:”之后的“./*”我认为没有任何意义,因为我认为Java不能扩展“*”字符。如果是这样,这可能意味着当前目录下的所有子目录也将包含在类路径中(即,这些子目录中的所有 .class 文件都将包含在类路径中)。

无论哪种方式,这都是非常不可读的,在 bash 脚本中创建一个变量并手动或使用类似的附加单个目录更有意义:

CLASSPATH="."
for DIRECTORY in $(ls /some/directory); do
    CLASSPATH+="${CLASSPATH:+:}$DIRECTORY"
done

java -cp "$CLASSPATH" ...

你明白漂移...


推荐阅读