我在PC上运行带有Java版本 1.6.0_31-b05 的Windows 7,而我的computerlab的网络Linux(Fedora,可能是版本13)正在运行Java版本 1.6.0_35- B10
我有一个C:\myproject
(et al)目录,其中包含src
,lib
和bin
个子目录。
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
命令分别从src
和lib
填充src01
和lib01
。因此,我认为没有Linux权限问题。
在Linux中,从../myproject/src
位置发出ls ../lib
表示(兄弟)lib
目录确实包含JAR文件。我还尝试了Linux javac
命令,其中包含lib
目录的绝对路径;没有快乐。
同样,我尝试从"
子句中删除引号(-cp
)标记;没有快乐。
问题是我正在运行旧版本的Fedora吗?如果没有,是否有人对问题是什么有假设?
答案 0 :(得分:2)
通配符扩展在Linux上的行为可能与在Windows上的行为不同:在类Unix系统中,在将参数传递给可执行文件之前执行通配符扩展是shell的职责;在Windows上,每个程序都有责任进行通配符扩展(如果有的话)。如有疑问,请将javac
替换为echo
,以了解通配符的实际扩展方式!而且您应该使用-sourcepath
选项javac
来定义源位置(无法判断这是否真的有效,自上次使用以来已经超过10年了......)< / p>