Linux javac命令在类路径中的通配符上发生错误

时间:2013-08-07 18:58:02

标签: java linux classpath wildcard

我在PC上运行带有Java版本 1.6.0_31-b05 的Windows 7,而我的computerlab的网络Linux(Fedora,可能是版本13)正在运行Java版本 1.6.0_35- B10

我有一个C:\myproject(et al)目录,其中包含srclibbin个子目录。

  • src文件夹包含树结构中的所有源代码,对应于java包。
  • lib目录包含JAR文件。

我在../myproject(等)下在Linux中重新创建了树。

  • 当我尝试在DOS下编译时,从..\myproject\src目录,使用下面的命令,它可以正常工作:

    javac -cp ".;../bin;../lib/*" -d ../bin org/unlv/schillerlab/motif_diversity/step02/*.java
    
  • 当我尝试在Linux中编译时,从../myproject/src目录,我收到消息错误的类路径../lib/*

    javac -cp ".:../bin:../lib/*" -d ../bin org/unlv/schillerlab/motif_diversity/step02/*.java
    

可以从DOS和Linux访问computerlab网络位置。在Linux中,我首先创建了../myproject/src../myproject/lib../myproject/bin目录。然后,在DOS中,我将必要的文件从C驱动器复制到../myproject/src01../myproject/lib01。然后,在Linux中,我使用cp -av命令分别从srclib填充src01lib01。因此,我认为没有Linux权限问题。

在Linux中,从../myproject/src位置发出ls ../lib表示(兄弟)lib目录确实包含JAR文件。我还尝试了Linux javac命令,其中包含lib目录的绝对路径;没有快乐。
同样,我尝试从"子句中删除引号(-cp)标记;没有快乐。

问题是我正在运行旧版本的Fedora吗?如果没有,是否有人对问题是什么有假设?

1 个答案:

答案 0 :(得分:2)

通配符扩展在Linux上的行为可能与在Windows上的行为不同:在类Unix系统中,在将参数传递给可执行文件之前执行通配符扩展是shell的职责;在Windows上,每个程序都有责任进行通配符扩展(如果有的话)。如有疑问,请将javac替换为echo,以了解通配符的实际扩展方式!而且您应该使用-sourcepath选项javac来定义源位置(无法判断这是否真的有效,自上次使用以来已经超过10年了......)< / p>