有没有办法使用外部存储的源代码并将其加载到Java程序中,以便它可以使用它?
我希望有一个可以在不编辑完整源代码的情况下进行更改的程序,并且甚至无需每次都编译即可。另一个优点是,我可以随意更改部分代码。
当然,我必须具有接口,以便可以将数据发送到其中并再次将其返回到固定的源程序中。
当然,它应该比纯口译系统更快。
那么,有没有办法像对这些外部源代码部分进行额外的编译以及完成此操作后一样启动程序?
预先感谢您,Andreas :)
为此,您需要javax.tools
API
。因此,您至少需要安装JDK才能使其正常运行(并让您的IDE指向它而不是JRE)。这是一个基本的启动示例(没有适当的异常和编码处理只是为了使基本示例不透明,不易
咳嗽 ):
public static void main(String... args) throws Exception {
String source = "public class Test { static { System.out.println(\"test\"); } }";
File root = new File("/test");
File sourceFile = new File(root, "Test.java");
Writer writer = new FileWriter(sourceFile);
writer.write(source);
writer.close();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() });
Class<?> cls = Class.forName("Test", true, classLoader);
}
这应该test
在stdout中打印,就像测试源代码中的静态初始化程序所做的那样。如果那些类实现了已经在类路径中的某个接口,则进一步使用将更加容易。否则,您需要使用Reflection
API
来访问和调用方法/字段。
问题内容: 是否可以通过内联CSS加载外部字体? 注意:我 不是 在谈论使用带有定义的外部CSS文件,而是类似以下内容: 问题答案: 是否可以使用内嵌CSS加载外部字体?不适用于外部CSS文件[....]。 是的,您可以按照Stephen Scaff的本文中的文章所示对base64字体进行编码,然后将其放到页面的块中,以避免外部请求。 也可以按照您所描述的浏览器是否支持的方式使用此技术。 每个现代
问题内容: 说我的源在我的src /树中(可能在我的测试/树中)。说我只想编译那棵树的 一部分 。我可能要这样做的原因多种多样。仅作为示例,我可能想要创建最小的jar(不包括某些类),或者我想要最快的编译时间来进行编译。我绝对想编译所有依赖项! 可以使用以下命令从命令行轻松实现: 现在,如何使用蚂蚁来做到这一点?javac ant 任务将编译所有内容: 将对源目录和目标目录进行递归扫描,以编译Ja
问题内容: 我正在修改其内部html的指令。到目前为止的代码: 它起作用,除了内部html不按angular求值。我想触发的子树重估。有没有办法做到这一点? 谢谢 :) 问题答案: 你必须像你的内部html一样
首先,允许我编辑minecraft服务器代码吗? 并且我在IntelliJ中获得了minecraft_server.jar的源代码,但是如果我想编译,我会得到100个错误,因为代码中有以下内容: 我真的不知道如何处理这些错误,因为在finshed jar中,它就像我的例子一样。 Minecraft服务器:https://Minecraft.net/download
问题内容: 我正在尝试使用Angular和Phonegap加载位于远程服务器上但遇到问题的视频。在我的JSON中,URL作为纯HTTP URL输入。 我的影片范本 我所有其他数据都已加载,但是当我查看控制台时,出现以下错误: 我尝试添加配置设置,但没有解决我的问题。 问题答案: 这是唯一对我有用的解决方案: 然后在iframe中:
这个报告在jasper studio中包含了外部jar,当我在jasper中运行时,没有产生任何错误,但是如果我在laravel上编译它,它会生成错误填充ReportRerror加载scriptlet类。 我在jaspersoft中看到我external.jar只有class=external.jar这样的名称内的路径,我对.jasper文件进行了反向工程,没有关于jasperstarter或ph