Classpath不起作用

时间:2013-05-20 11:36:07

标签: java ant log4j classpath dom4j

我从爱马仕获得了源代码(hermes2_src_20100121)。当我解压缩它有大约10个文件夹,这是单独的项目。

/myd1/Exetel/Hermes_SRC/ebxml-pkg
/myd1/Exetel/Hermes_SRC/CorvusEbMS
/myd1/Exetel/Hermes_SRC/Commons
Etc….

Each project has its own build script
/myd1/Exetel/Hermes_SRC/ebxml-pkg/ant/build.xml
/myd1/Exetel/Hermes_SRC/CorvusEbMS/ant/build.xml
/myd1/Exetel/Hermes_SRC/Commons/ant/build.xml
Etc….

我需要使用给定的ant脚本构建这10个项目 当我运行它时,脚本失败并且它给出了编译错误 /myd1/Exetel/Hermes_SRC/ebxml-pkg/src/hk/hku/cecid/ebms/pkg/PKISignatureImpl.java:98:错误:包org.apache.log4j不存在 等.....

在此问题中,无法找到log4j(类似dom4J,Mail等等。)

所以我在路径“/ myd1 / exete / libs /”中创建了文件夹,并在那里添加了所需的jar文件并将CLASSPATH设置为此文件夹

CLASSPATH=/myd1/exete/libs/*

但仍然会出现类路径无效的错误

我尝试将CLASSPATH添加到〜/ .bashhrc

CLASSPATH=/myd1/exete/libs/*
Export CLASSPATH

将CLASSPATH添加到gedit / etc / environment 环境| grep CLASSPATH打印正确的路径

问题是当我运行构建脚本时,它仍然会提供与类路径无法正常工作相同的错误

2 个答案:

答案 0 :(得分:0)

您应该在ANT脚本中设置classpath:

<path id="common.classpath">
    <fileset dir="/myd1/exete/libs">
        <include name="*.jar"/>
    </fileset>
</path>

根据http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html设置CLASSPATH

  

classpath1:classpath2 .jar,.zip或.class文件的类路径。   每个类路径都应以文件名或目录结尾,具体取决于   您要将类路径设置为:对于.jar或.zip文件   包含.class文件,类路径以.zip的名称结尾   或.jar文件。对于未命名包中的.class文件,类路径   以包含.class文件的目录结束。上课   在命名包中的文件,类路径以该目录结束   包含“root”包(完整包中的第一个包)   名称)。多个路径条目以冒号分隔。

     

默认类路径是当前目录。设置CLASSPATH   变量或使用-classpath命令行选项会覆盖它   默认,因此如果要在搜索中包含当前目录   路径,你必须包括“。”在新设置中。

     

既不是目录也不是归档的类路径条目(.zip或.zip   .jar文件)也*被忽略。

所以你应该尝试:

CLASSPATH=/myd1/exete/libs/* 
or
CLASSPATH=/myd1/exete/libs

答案 1 :(得分:0)

将您的类路径设置为CLASSPATH=/myd1/exete/libs/myjar.jar

即。在CLASSPATH中命名你的jar!