首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaCompiler接口:在运行时传入变量

问JavaCompiler接口:在运行时传入变量
EN

Stack Overflow用户
提问于 2012-07-20 18:07:38
回答 1查看 98关注 0票数 0

我使用java提供的接口从程序中调用编译器。

代码语言:javascript
复制
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);

Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList("MyClass.java"));

compiler.getTask(null, fileManager, null, null, null, compilationUnits).call();

fileManager.close();

一切都很好,但我希望能够做的是将变量传递给我正在编译的项目,并比较结果,看看它们是否是预期的,所以我不,程序工作正常。有点像JUnit测试类的方式。JavaCompiler接口中是否有允许您传入变量并读取它们的方法...像System.in()和System.out()这样的东西

EN

回答 1

Stack Overflow用户

发布于 2012-07-20 19:07:14

运行(Java)程序与编译它没有太多关系。要么动态加载编译的类并运行它们(例如,在新线程中),要么使用ProcessBuilder启动一个新的VM,基本上构造一个类似"java -cp /class/path my.compiled.MainClass ...“的命令行。后者可能更好,因为被测程序不会意外地通过System.exit()终止您的程序。

当然,还有一个更好的解决方案:为什么不以编程方式生成一些JUnit测试(并调用JUnit)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11577220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档