我一直在尝试让ANTLR-3.5-complete.jar在Android应用程序上工作,但我不能让它工作!Bart Kiers的答案对我帮助很大,但我仍然不能让它工作。
我试图使一个按钮,当点击时,将根据我的语法验证EditText视图中的文本是否正确。g,但无论我输入的文本是否正确,当我在实例化ANTLRStringStream时单击按钮时,我的应用程序总是崩溃。我有:
public void onClickVerify(View v) throws TypeNotPresentException {
String source = "foobar";
Log.e("TestDebug", "Instantiating views");
TextView out = (TextView) findViewById(R.id.textView1);
EditText in = (EditText) findViewById(R.id.editText1);
try {
Log.e("TestDebug", "Getting source from EditText");
source = in.getText().toString();
Log.e("TestDebug", "source = " + source);
Log.e("TestDebug", "Instantiating stream");
ANTLRStringStream stream = new ANTLRStringStream(source);
Log.e("TestDebug", "Instantiating lexer");
grammarLexer lexer = new grammarLexer(stream);
Log.e("TestDebug", "Instantiating parser");
grammarParser parser = new grammarParser(
new BufferedTokenStream(lexer));
Log.e("TestDebug", "Applying rule to parser");
out.setText(source + " = " + !parser.failed());
} catch (IllegalStateException ise) {
out.setText("Exception caught");
}
}
下面是我在日志中看到的:
- <
- 实例化视图/gh>
- 从EditText获取源码
- source = test33 <
- 实例化流/gh>
然后弹出"不幸的是,TestAntlrApp已停止"窗口。
编辑:这是我更多的日志。
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3591)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
... 11 more
Caused by: java.lang.NoClassDefFoundError: org.antlr.runtime.ANTLRStringStream
at com.test.antlr.MainActivity.onClickVerify(MainActivity.java:89)
找不到类ANTLRStringStream类?然而,在代码中似乎没有错误/警告,我甚至可以看到类的层次结构。
由于最近的ADT更新,您不能使用Eclipse的常规方式将外部库添加到Build Path中。相反,您必须将它放在libs文件夹中,以便将其打包到.apk中。如果您只是将其添加到构建路径中,则在构建.apk时将忽略它。
症状:应用程序无法识别外部库类。
解决方案:将.jar文件放在libs文件夹中。
相关内容
- 没有找到相关文章
最新更新
- OAuth2和PKCE - Code验证器无效
- GCP 的 CloudSQL - 重新创建现有的只读副本
- 当解引用指针OCaml时,匹配总是成功的
- 如何使用cx_Oracle解析oracle过程中的TAB TYPE OUT
- 如何列出numpy array中的最低值
- 我如何在脚本中定义tracery来生成随机句子?
- 如何使用yapf保持参数都在一行?
- 试图在底部填充溢出
- 如何使用Matplotlib在圆中绘制未定义数量的随机点
- 如何在vscode中选择同一个词的所有引用
- 使用Ansible jinja2 list特性返回的结果比使用Ansible hostvars返回的结果更多
- Laravel Eloquent,如何在3个表上访问Eloquent ?
- 我怎样才能让我的Angular应用允许在生产环境中刷新——重写URL ?
- VBS 和 WSH 在简单循环和 CPU 过度使用时出现错误
- ComboBox VirtualizingStackPanel WPF Programmatically
- 如何在使用聚合函数时忽略字符
- 如何解决多线程静态变量增量?
- webpack-streams breaks @types/webpack
- 为BASH中的单词数组加边框
- 如何阻止不需要的功能组件被调用?依赖关系在哪里?
- 列表中字符串字符之间的比较
- 即使在我执行 commit() 和 autocommit=True 之后,也无法使用 psycopg2 脚本更新 PostgreSQL 表
- 在x秒后在两个函数之间切换
- 从对象数组中提取属性,并通过lodash创建基于此属性的另一个?
- sectionIndexTitles映射不能正常工作
- Apache commons CSVPrinter正在编码双值
- coinex交换API,并使用Curl /BASH来放置市场订单加密对
- 询问直到输入在列表中?
- Cant 将 2D 数组传递给函数 C++
- 如何同步外表和本表?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium