1

我在我的 PC 上运行带有 Java 版本1.6.0_31-b05的 Windows 7 ,而我的计算机实验室的网络 Linux(Fedora,可能是版本 13)正在运行 Java 版本1.6.0_35-b10

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

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

../myproject我在(et al) 下在 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 访问。在 Linux 中,我首先创建了../myproject/src../myproject/lib../myproject/bin目录。然后,在 DOS 中,我将必要的文件从C驱动器复制../myproject/src01../myproject/lib01. 然后,在 Linux 中,我使用cp -av命令分别填充srclibfromsrc01lib01。因此,我认为不存在 Linux 权限问题。

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

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

4

1 回答 1

2

通配符扩展在 Linux 上的行为可能与在 Windows 上不同:在类 Unix 系统中,在将参数传递给可执行文件之前执行通配符扩展是 shell 的职责;在 Windows 上,每个程序都有责任进行通配符扩展(如果有的话)。有疑问替换javacecho查看通配符实际上是如何扩展的!而且您应该使用该-sourcepath选项来javac定义源位置(不知道这是否真的有效,距离我上次使用它已经有 10 多年了......)

于 2013-08-07T19:06:16.630 回答