对于shell脚本中的示例:
_CLASSPATH =.
for jar in lib/*.jar
do
_CLASSPATH=${_CLASSPATH}:${jar}
done
如何在Perl中动态构建Java类路径?
答案 0 :(得分:4)
与Perl一样,有多种方法可以做到这一点,但一种紧凑的方式是:
$_CLASSPATH = join(":", ".", glob("lib/*.jar"));
如果要设置环境变量,可能需要进行以下操作:
$ENV{_CLASSPATH} = join(":", ".", glob("lib/*.jar"));
答案 1 :(得分:2)
my $_CLASSPATH = join(":", ".", glob("lib/*.jar"));
$ENV{CLASSPATH} = $_CLASSPATH;
注意:如果您处于Web服务器环境中,尤其是那个共享Perl解释器(如mod_perl)的环境,请始终本地化$ENV{}
分配以避免不愉快:local $ENV{CLASSPATH}=$_CLASSPATH;
答案 2 :(得分:-1)
不是Perl代码(没有代码=没有错误:)但不是
export CLASSPATH=.:lib/*
工作?在我启动Java应用程序的bash脚本中,我设置了这个,app可以“看到”我想要的所有.jars,但你可以“全局”设置它:
mn@test:~# export CLASSPATH=.:/usr/local/jars/*
mn@test:~# echo $CLASSPATH
.:/usr/local/jars/*
mn@test:~# ls /usr/local/jars/*.jar
/usr/local/jars/activation.jar ...
mn@test:/home# cat show_cp.java
public class show_cp
{
public static void main(String[] args)
{
System.out.println(System.getProperty("java.class.path", "."));
}
}
mn@test:/home# java show_cp
.:/usr/local/jars/postgresql-8.4-701.jdbc4.jar:/usr/local/jars/RmiJdbc.jar:/usr/local/...
修改强>
中的说明在CLASSPATH中使用通配符和Perl代码连接文件名:
my @files = glob "/jars/*.jar";
my $cp = join(":", @files);
print($cp)
答案 3 :(得分:-1)
您可以尝试:
$CP = '.';
foreach(<lib/*.jar>) {
$CP .= ":$_";
}
$ENV{'_CLASSPATH'} = $CP;