Java代码在OSX Mavericks中不起作用

时间:2014-09-23 17:20:54

标签: java macos decode asn.1

我试图运行一个java库,以便我可以构建它并进行自定义。该库被称为jayu解析ASN文件,以便您可以解码它们。可以下载here

有一些测试数据可以检查"测试"文件夹并在Readme.txt文件中提到。 Windows有一个asn2csv批处理文件,但我使用的是OSX mavericks。根据自述文件,我需要通过调用命令来运行它:

ls $ASN_DATA_DIR/*.dat | xargs java -cp "./*.jar:."  Path/To/Stream1.txt  test.testdata.Stream1 $OUTPUT_DIR

OR

java -cp "*.jar;$PATH_TO_TEST_DIR" Stream1.txt test.testdata.Stream1  . Path/To/Stream1.dat

但无论我尝试什么,我总是得到Error: Could not find or load main class Stream1.txt

我不是Java程序员。我在这做错了什么?这种情况的发展最近似乎不活跃,但它仍然有用。所以,我在这里发帖,希望有人能帮助我运行这个例子。

编辑:我已经添加了目录和文件的树结构

+ jayu
     |--Readme.txt           
     |--commons-compiler.jar
     |--janino.jar
     |--jayu.jar             (ASN parser)
     |--AsnToCsv.bat         (Command line Tool)
     +--test                 (Contains test data for examples)
         |
         + testdata         
              |
              Stream1.txt   (Grammar File)
              Stream1.dat   (ASN Data File)
              Stream1.java  {mapFile}
              ...

1 个答案:

答案 0 :(得分:1)

它将Stream1.txt解释为您尝试执行的Java类,因为它将java视为您的第一个参数。您的第一个参数应该是包含main()的类的名称,或者,必须使用-jar选项指示可执行JAR。

这似乎表明"*.jar;$PATH_TO_TEST_DIR"正在评估为空白。你能看到当前工作目录中是否有.jar个文件? $PATH_TO_TEST_DIR的价值是什么?

另一件事是,如果你在OS X上使用第二种形式,你应该有:而不是;,因为它是基于Unix的操作系统,而不是Windows。


UPDATE1

我对如何运行可执行JAR的描述略有错误。您使用的是-jar选项,而不是-cp(我在上面进行了更正)。由于他们将-cp放在他们的调用中,我猜他们不打算以可执行JAR为目标,而是命名主类。对我来说,test.testdata.Stream1是主要类,这意味着他们给你的顺序是错误的。试试这个:

java -cp "*.jar:$PATH_TO_TEST_DIR" test.testdata.Stream1 Stream1.txt . Path/To/Stream1.dat

或以:

开头的其他一些排序

java -cp "*.jar:$PATH_TO_TEST_DIR" test.testdata.Stream1 ..........

也就是说,这使得test.testdata.Stream1成为java的第一个命令行参数。