- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JavaParser并关注其 Wiki。问题是即使我更改了方法的名称并向其添加了参数,文件也没有更新。换句话说,不会保存更改。当我 System.out.println
更改后的 CompilationUnit
时,它会打印出更改,但这些更改根本不会影响源文件。
是否有类似 CompilationUnit.update()
的东西,还是我遗漏了什么?
我从 Wiki 使用的示例:
files_list = FilePicker.chooseAndGetJavaFiles();
if (files_list == null || files_list.isEmpty()) {
Errors.showError(Errors.COMMENT_GENERATOR_FILELIST_NULL_OR_EMPTY);
} else {
CompilationUnit cu = null;
FileInputStream in = new FileInputStream(files_list.get(0));
try {
cu = JavaParser.parse(in);
} catch (ParseException ex) {
Logger.getLogger(CommentGenerator.class.getName()).log(Level.SEVERE, null, ex);
} finally{
in.close();
}
new MethodChangerVisitor().visit(cu,null);
System.out.println(cu.toString());
}
}
private static class MethodChangerVisitor extends VoidVisitorAdapter{
@Override
public void visit(MethodDeclaration n, Object arg) {
// change the name of the method to upper case
n.setName(n.getName().toUpperCase());
// create the new parameter
Parameter newArg = ASTHelper.createParameter(ASTHelper.INT_TYPE, "value");
// add the parameter to the method
ASTHelper.addParameter(n, newArg);
}
}
编辑:这是解决方案;添加下行;
Files.write(new File("Modified.java").toPath(), cu.toString(), StandardCharsets.UTF_8);
更改下线以使用特殊字符(例如“ş,ö,ü ...)
cu = JavaParser.parse(files_list.get(0));
到
cu = JavaParser.parse(files_list.get(0),"UTF-8");
最佳答案
既然你已经有了字符串表示,那么这个呢:
Files.write(new File("Modified.java").toPath(), cu.toString(), StandardCharsets.UTF_8);
关于JavaParser 不更新源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881876/
class A{ int x = 10; } 这是A.java 我要获取NewA.java class NewA{ int x = 10; Sting text = "B";
我想在 Eclipse 中使用 javaparser 和我的插件。我可以使用/导入除一个之外的所有 JavaParser-Core 类。 JavaParser 类导致错误。我怎样才能解决这个问题? 这
我是 java 的新手。我正在尝试创建一个项目,该项目使用 JavaParser 从所需的 .java 文件中获取类名和字段名。 .但是我得到一个错误,我对此错误一无所知。如何修复该错误? 1-)首先
我正在使用 Javaparser解析 Java 源代码。 有没有办法实现一个可以访问抽象Node类的Visitor? 我想访问每个节点并打印它的行号,但我不想为每个节点类型(AssignExpr、Bi
我已阅读JavaParser manual并开始构建我自己的示例。我想要实现的目标是读取Java代码并在其上插入新的代码行。具体来说,我想在每个 if 和 while 语句之前初始化一个计数器,并在语
我正在编写一个从 Java 文件中删除注释的 Java 应用程序。 我写了这段代码: static void removeComments(Node node) { for (Comm
我想添加一个类型为 List 的新字段到类中的每个现有字段。我还希望用一个空的 ArrayList 来初始化它.如何创建合适的 FieldDeclaration要添加到 BodyDeclaration
我正在使用 JavaParser并关注其 Wiki。问题是即使我更改了方法的名称并向其添加了参数,文件也没有更新。换句话说,不会保存更改。当我 System.out.println 更改后的 Comp
我正在使用 javaparser-1.0.8 并尝试生成以下通用方法。 public T get(int param) { return (T) doSomeMagic(param); } 我有
我想创建一个 Java 转译器,它将读取接近 Java 的代码(称之为 JavaHash)并在另一端发出“纯”Java 代码。特别是,我想在 hashmap 成员前面添加一个新标记,即井号标签“#”,
我正在编写一个用于收集类注释的工具,我想收集开发人员逻辑上附加到类的所有注释: public abstract class A { private Integer d; // comment
我正在使用https://code.google.com/p/javaparser Java 解析器从文件中获取数据。问题是解析器无法识别 arraylist、hashmap、map 等。 当我在这样
我正在使用这个 javaparser https://github.com/javaparser/javaparser解析一些github用户的大量java源代码,从中进行一些统计(这是一个大学项目)
我想从 JavaParser 或其他 Java 代码解析器获取类型化 AST。这意味着我将能够获取特定变量的类型或方法的参数+返回类型。我在 google 上搜索了很多有关 JavaParser 的此
我有一个 AnnotationExpr,如何获取注释的参数及其值(例如 @UnityBridge(fullClassName = "test") - 我如何获得一个fullClassName 参数的值
我一直在使用 CompilationUnit 来解析 Java 文件,但现在我想解析目录中的所有文件。 我尝试了以下方法,但是当我期望它是指定目录中的 Java 文件数时,编译大小计算为 0。 Pat
JavaParser是一个java源代码解析工具。我阅读了文档,但发现它只能解析完整的java类的源代码,例如: public class X { public void show(Strin
我已经建立了一个 FieldDeclarations 列表,需要找出每个字段的名称: List fields = classDeclaration.getFields(); for (FieldDec
我正在使用Javaparser解析/编写源代码。 我注意到,如果我创建一个带有一行 thenStmt 的 IfStmt,则 toString 方法不会使用大括号来括住该 block 。这使得输出源代码
这可能是一个愚蠢的问题,但我想实现主题所说的内容。我想在新的compilationUnit 中向新声明的classOrInterface 对象添加一个新的String 字段。但从我从源文件中可以看出,
我是一名优秀的程序员,十分优秀!