我想将我的java代码移植到纯斯卡拉,所以将不胜感激在这方面的任何帮助。斯卡拉运行时间代码编译
下面的代码首先将我的业务逻辑转换为java代码。在这里,我使用freemarker模板来执行基于模板的代码生成。创建文件后,我使用java comiler编译代码并创建一个jar文件,该文件保存在一个临时目录中
我目前使用提供运行时编译的javax.tools.*
包。什么是斯卡拉等同于这种方法?我想用freemarker模板生成纯粹的Scala代码,然后运行Scala编译来创建一个jar文件。
下面是我用来实现此目的的示例Java代码。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
Iterable<? extends JavaFileObject> compilationUnits = Arrays.asList(javaFileObjects);
StringBuilder builder = new StringBuilder();
builder.append(service.getConfig().getProp("coreLib"));
builder.append(";" +result.getCodeContext().getOmClasspath());
builder.append(";" +jarBuilder.toString());
builder.append(";" +service.getConfig().getProp("tempCodeGen"));
String[] compileOptions = new String[]{"-d", result.getCodeContext().getOmClasspath(),"-cp",builder.toString()} ;
Iterable<String> compilationOptionss = Arrays.asList(compileOptions);
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
CompilationTask compilerTask = compiler.getTask(null, stdFileManager, diagnostics, compilationOptionss, null, compilationUnits) ;
boolean status = compilerTask.call();
你有没有考虑使用宏? http://docs.scala-lang.org/overviews/macros/toc.html –