如何在Perl中动态构建Java类路径?

时间:2010-05-11 09:48:22

标签: java perl

对于shell脚本中的示例:

_CLASSPATH =.
for jar in lib/*.jar
do
    _CLASSPATH=${_CLASSPATH}:${jar}
done

如何在Perl中动态构建Java类路径?

4 个答案:

答案 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/...

修改

您可以按照Setting the class path

中的说明在CLASSPATH中使用通配符

和Perl代码连接文件名:

my @files = glob "/jars/*.jar";
my $cp = join(":", @files);
print($cp)

答案 3 :(得分:-1)

您可以尝试:

$CP = '.';
foreach(<lib/*.jar>) {
  $CP .= ":$_";
}
$ENV{'_CLASSPATH'} = $CP;