- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 CMD 提示符下运行 .jar 文件时,出现以下错误:
C:\Users\Mikael\My Documents\NetBeansProjects\cs413CompilerProject\dist>
java -jar "cs413CompilerProject.jar" "C:\Users\Mikael\Documents\NetBeansProjects\cs413
CompilerProject\cs413Compiler\simple.x"
User's current working directory:
C:\Users\Mikael\My Documents\NetBeansProjects\cs413CompilerProject\dist
java.io.FileNotFoundException: lexer\setup\tokens
(The system cannot find the path specified)
Exception in thread "main" java.lang.NullPointerException
at lexer.setup.TokenSetup.initTokenClasses(TokenSetup.java:77)
at lexer.setup.TokenSetup.main(TokenSetup.java:35)
它所引用的代码是(从 TokenSetup.java 的第 24 行开始,到第 35 行结束):
24 public class TokenSetup {
25 private String type, value; // token type/value for new token
26 private int tokenCount = 0;
27 private BufferedReader in;
28 private PrintWriter table, symbols; // files used for new classes
29
30 /**
31 *
32 * @param args
33 */
34 public static void main(String args[]) {
35 new TokenSetup().initTokenClasses();}
然后是TokenSetup.initTokenClasses下的其他引用:
77 public void initTokenClasses() {
78 table.println("/*********************");
79 table.println("*");
80 table.println("* @Author Mikael M");
81 //... print a bunch of things
}
完整代码:
package lexer.setup;
import java.util.*;
import java.io.*;
//
///**
// * TokenSetup class is used to read the tokens from file <i>tokens</i>
// * and automatically build the 2 classes/files <i>TokenType.java</i>
// * and <i>Sym.java</i><br>
// * Therefore, if there is any change to the tokens then we only need to
// * modify the file <i>tokens</i> and run this program again before using the
// * compiler
//*/
public class TokenSetup {
private String type, value; // token type/value for new token
private int tokenCount = 0;
private BufferedReader in;
private PrintWriter table, symbols; // files used for new classes
/**
*
* @param args
*/
public static void main(String args[]) {
new TokenSetup().initTokenClasses();
}
TokenSetup() {
try {
System.out.println("User's current working directory: " + System.getProperty("user.dir"));
String sep = System.getProperty("file.separator");
in = new BufferedReader( new FileReader("lexer" + sep + "setup" + sep + "tokens"));
table = new PrintWriter(new FileOutputStream("lexer" + sep + "TokenType.java"));
symbols = new PrintWriter(new FileOutputStream("lexer" + sep + "Tokens.java"));
} catch (Exception e) {
System.out.println(e);
}
}
///**
// * read next line which contains token information;<br>
// * each line will contain the token type used in lexical analysis and
// * the printstring of the token: e.g.<br><ul>
// * <li>Program program</li>
// * <li>Int int</li>
// * <li>BOOLean boolean</li></ul>
// * @throws IOException
// */
public void getNextToken() throws IOException {
try {
StringTokenizer st = new StringTokenizer(in.readLine());
type = st.nextToken();
value = st.nextToken();
} catch (NoSuchElementException e) {
System.out.println("***tokens file does not have 2 strings per line***");
System.exit(1);
} catch (NullPointerException ne) {
throw new IOException("***End of File***");
}
tokenCount++;
}
///**
// * initTokenClasses will create the 2 files
//*/
public void initTokenClasses() {
table.println("/*********************");
table.println("*");
table.println("* @Author Mikael C. Miller");
table.println("*");
table.println("* SFSU 9/20/15");
table.println("*");
table.println("* CSc 413");
table.println("*");
table.println("*/");
table.println("package lexer;");
table.println(" ");
table.println("/**");
table.println(" * This file is automatically generated<br>");
table.println(" * it contains the table of mappings from token");
table.println(" * constants to their Symbols");
table.println("*/");
table.println("public class TokenType {");
table.println(" public static java.util.HashMap<Tokens,Symbol> tokens = new java.util.HashMap<Tokens,Symbol>();");
table.println(" public TokenType() {");
symbols.println("package lexer;");
symbols.println(" ");
symbols.println("/**");
symbols.println(" * This file is automatically generated<br>");
symbols.println(" * - it contains the enumberation of all of the tokens");
symbols.println("*/");
symbols.println("public enum Tokens {");
symbols.print(" BogusToken");
while (true) {
try {
getNextToken();
} catch (IOException e) {break;}
String symType = "Tokens." + type;
table.println(" tokens.put(" + symType +
", Symbol.symbol(\"" + value + "\"," + symType + "));");
if (tokenCount % 5 == 0) {
symbols.print(",\n "+ type);
} else {
symbols.print("," + type);
}
}
table.println(" }");
table.println("}");
table.close();
symbols.println("\n}");
symbols.close();
try {
in.close();
} catch (Exception e) {}
}
}
最佳答案
在TokenSetup
的构造函数中,抛出FileNotFound
异常,但除了将异常消息打印到System之外,您不执行任何操作.out
。然后,您的构造函数返回,就好像一切正常一样,您的 main()
函数继续对 TokenSetup
部分初始化的实例调用 initTokenClasses()
>。我什至不想去想结果会发生什么。我什至不打算调查它。这是无关紧要的。问题在于抛出的第一个异常,即 FileNotFound 异常。随后发生的 NullPointerException 是 red herring (Wikipedia) .
当你遇到异常时,你不能像什么都没发生一样继续进行。异常(exception)情况不能被掩盖。改为这样做:
public static void main(String args[]) throws Exception
和
TokenSetup() throws Exception
如果您不知道如何处理异常,请停止 try catch 异常。
这样,当抛出异常时,您的程序会立即停止,而不是继续向下运行并不可避免地抛出更多异常,从而使您感到困惑。
关于Java 空指针异常 : Tokenizing Input for Lexer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32905498/
我正在开发一个应用程序,它使用 OAuth - 基于 token 的身份验证。 考虑到我们拥有访问和刷新 token ,这就是流程的样子。 Api call -> intercepter append
如何取消标记此代码的输出? 类(class)核心: def __init__(self, user_input): pos = pop(user_input) subject = ""
当我使用命令 kubectl 时与 --token标记并指定 token ,它仍然使用 kubeconfig 中的管理员凭据文件。 这是我做的: NAMESPACE="default" SERVICE
我正在制作 SPA,并决定使用 JWT 进行身份验证/授权,并且我已经阅读了一些关于 Tokens 与 Cookies 的博客。我了解 cookie 授权的工作原理,并了解基本 token 授权的工作
我正在尝试从应用服务获取 Google 的刷新 token ,但无法。 日志说 2016-11-04T00:04:25 PID[500] Verbose Received request: GET h
我正在开发一个项目,只是为了为 java 开发人员测试 eclipse IDE。我是java新手,所以我想知道为什么它不起作用,因为我已经知道该怎么做了。这是代码: public class ecli
我正在尝试使用 JwtSecurityTokenHandler 将 token 字符串转换为 jwt token 。但它出现错误说 IDX12709: CanReadToken() returned
我已阅读文档 Authentication (来自 Facebook 的官方)。我仍然不明白 Facebook 提供的这三种访问 token 之间的区别。网站上给出了一些例子,但我还是不太明白。 每个
我的部署服务器有时有这个问题,这让我抓狂,因为我无法在本地主机中重现,我已经尝试在我的 web.config 中添加机器 key ,但没有成功远。 它只发生在登录页面。 我的布局:
我已经设法获得了一个简单的示例代码,它可以创建一个不记名 token ,还可以通过阅读 stackoverflow 上的其他论坛来通过刷新 token 请求新的不记名 token 。 启动类是这样的
如果我有以前的刷新 token 和使用纯 php 的访问 token ,没有 Google Api 库,是否可以刷新 Google Api token ?我在数据库中存储了许多用户刷新和访问 toke
我通过 Java 应用程序使用 Google 电子表格时遇到了问题。我创建了应用程序,该应用程序运行了 1 年多,没有任何问题,我什至在 Create Spreadsheet using Google
当我有一个有效的刷新 token 时,我正在尝试使用 Keycloak admin REST API 重新创建访问 token 。 我已经通过调用 POST/auth/realms/{realm}/p
我正在尝试让第三方 Java 客户端与我编写的 WCF 服务进行通信。 收到消息时出现如下异常: Cannot find a token authenticator for the 'System.I
在尝试将数据插入到我的 SQl 数据库时,我收到以下错误 System.Data.SqlServerCe.SqlCeException: There was an error parsing the
使用数据库 session token 系统,我可以让用户使用用户名/密码登录,服务器可以生成 token (例如 uuid)并将其存储在数据库中并将该 token 返回给客户端。其上的每个请求都将包
我最近注册了 Microsoft Azure 并设置了认知服务帐户。使用 Text Translation API Documentation 中的说明我能够使用 interactive online
我使用 IAntiforgery API 创建了一个 ASP.Net Core 2 应用程序。 这提供了一种返回 cookie 的方法。 客户端获取该 cookie,并在后续 POST 请求中将该值放
我正在使用 spacy 来匹配某些文本(意大利语)中的特定表达式。我的文本可以多种形式出现,我正在尝试学习编写一般规则的最佳方式。我有如下 4 个案例,我想写一个适用于所有案例的通用模式。像这样的东西
我无法理解 oauth 2.0 token 的原则处理。 我的场景是,我有一个基于 web 的前端后端系统,带有 node.js 和 angular 2。用户应该能够在此站点上上传视频。然后创建一些额
我是一名优秀的程序员,十分优秀!