java使ANTLR生成的类文件成为一个jar文件
使用ANTLR,我在编译后得到一些java类文件。 我需要把所有的类文件放到一个jar文件中
我表明。mf文件,其中有一行“Main class:Test”指示主文件。 我运行“JARCMF清单”。你好。jar*。同学们打招呼。jar文件
但是当我试着运行“java-jarhello”时。jar',我得到以下错误消息
^{pr1}$怎么了? 当我运行“java测试”时,我得到了正确的结果
我使用的示例是《最终的ANTLR参考》一书中的源代码,您可以从http://www.pragprog.com/titles/tpantlr/source_code下载
示例位于/tour/trees/。在编译了g和java文件之后,我得到了一堆类文件
使用unzip-l,我得到以下信息
^{pr2}$测试。java的开头如下
import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;
public class Test {
public static void main(String[] args) throws Exception {
# 1 楼答案
您用于测试类的包名称空间是什么
比如说,如果你的主课是职业选手。寻找测验 你把它列为
?
Antler会产生文件夹的层次结构
因此,您的主类文件位于
当您jared文件时,您是否首先将cd放入“whatever”文件夹,以便在创建jar时将jar内容根放到“pro”文件夹中?因此,当您使用zip查看器列出jar文件时,您可以看到/pro/seek/层次结构,在该层次结构下可以找到生成的java源文件
您是否正确创建了jar文件?可能不是antlr问题,而是关于如何创建可执行jar的问题
从您提供的更多信息中,
以下是进一步的想法:
在运行hello时,您没有包括antlr分发jar的路径。罐子
或者在清单中指定它为
或者在运行hello时指定它。罐作为
确保antlr罐子在hello旁边。罐子
当java源代码在编译期间使用任何库时,在运行编译后的代码时必须包含这些库,这应该是非常明显的规则,因为计算机需要知道如何处理对库例程的调用
比如说,有人在一个类Truth中编写了一个例程showMe(boolean theTruth),并将其放在一个jar Truth中。罐子:
还有你的测试。java有一个电话
你必须包括真相。否则jvm如何知道如何处理对showMe()的调用
Antlr生成一组java源文件,它们调用Antlr运行时,因此需要在运行时类路径中包含Antlr运行时。您的运行时错误表明jvm正在查找org。antlr。运行时。在Antl运行时jar中找到的CharStream类
http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html