我试图在eclipse插件之外使用JDT的ASTParser
,这意味着我无法通过Java模型(IProject
)轻松配置它, ICompilationUnit
等)。相反,我需要使用ASTParser.setEnvironment(classpathEntries, sourcepathEntries, encoding, includeVMPath)。理论上应该没什么问题,但是我无法让源路径和类路径工作。
这些参数究竟取得了什么?我假设类路径的JAR的绝对路径,以及所有源(.java)文件的绝对路径。但是,以下操作无效(错误如下):
public static void main(String[] args) {
String[] sourceFilePaths = new String[] {"C:\\Users\\Aljoscha\\Desktop\\workspaceba\\ExampleProject\\src\\examplepackage\\ExampleClass.java"};
String[] classpathEntries = new String[] {"C:\\Program Files\\Java\\jdk1.8.0_31\\src.zip"};
String[] sourcepathEntries = new String[] {"C:\\Users\\Aljoscha\\Desktop\\workspaceba\\ExampleProject\\src\\examplepackage\\ExampleClass.java"};
ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);
parser.setEnvironment(classpathEntries, sourcepathEntries, null, false);
MyFileASTRequestor requestor = new MyFileASTRequestor();
parser.createASTs(sourceFilePaths, null, null, requestor, null);
}
这给了我以下错误:
Exception in thread "main" java.lang.IllegalStateException: invalid environment settings
at org.eclipse.jdt.core.dom.ASTParser.getClasspath(ASTParser.java:261)
at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:993)
at asg.Foo.main(Foo.java:22)
有谁知道要传递给setEnvironment()函数的内容?
答案 0 :(得分:1)
user = models.User.filter_by(username=response['username'])
和classpathEntries
应该是文件夹,JAR或ZIP。
顺便说一句,sourcepathEntries
的参数bindingKeys
不能是parser.createASTs(...)
。