代码之家  ›  专栏  ›  技术社区  ›  joe

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

  •  0
  • joe  · 技术社区  · 15 年前

    例如,在shell脚本中:

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

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

    4 回复  |  直到 15 年前
        1
  •  4
  •   psmears Touffy    15 年前

    与Perl一样,有多种方法可以做到这一点,但一种紧凑的方法是:

    $_CLASSPATH = join(":", ".", glob("lib/*.jar"));
    

    如果要设置环境变量,可能需要执行以下操作:

    $ENV{_CLASSPATH} = join(":", ".", glob("lib/*.jar"));
    
        2
  •  2
  •   DVK    15 年前
    my $_CLASSPATH = join(":", ".", glob("lib/*.jar"));
    $ENV{CLASSPATH} = $_CLASSPATH;
    

    注意:如果您在一个Web服务器环境中,特别是一个像mod&perl这样共享perl解释器的环境中,请始终本地化您的 $ENV{} 避免不愉快的任务: local $ENV{CLASSPATH}=$_CLASSPATH;

        3
  •  -1
  •   codaddict    15 年前

    你可以试试:

    $CP = '.';
    foreach(<lib/*.jar>) {
      $CP .= ":$_";
    }
    $ENV{'_CLASSPATH'} = $CP;
    
        4
  •  -1
  •   Michał Niklas    15 年前

    不是Perl代码(没有代码=没有错误:)但是没有

    export CLASSPATH=.:lib/*
    

    工作?在启动Java应用程序的我的BASH脚本中,这个和应用程序可以“看到”所有。我想要JAR,但是你可以把它设置成“全局”:

    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


    以及连接文件名的Perl代码:

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