我试图运行一个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}
...
答案 0 :(得分:1)
它将Stream1.txt
解释为您尝试执行的Java类,因为它将java
视为您的第一个参数。您的第一个参数应该是包含main()
的类的名称,或者,必须使用-jar
选项指示可执行JAR。
这似乎表明"*.jar;$PATH_TO_TEST_DIR"
正在评估为空白。你能看到当前工作目录中是否有.jar
个文件? $PATH_TO_TEST_DIR
的价值是什么?
另一件事是,如果你在OS X上使用第二种形式,你应该有:
而不是;
,因为它是基于Unix的操作系统,而不是Windows。
我对如何运行可执行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
的第一个命令行参数。