Tag: 运行时

在运行时更新Java代码

大约一年前,我偶然发现了Java中的一个很好的function,我无法再为我的生活找到它。 通过一些神奇的界面,显然可以在运行时声明一些可替换的类或函数。 我发现了一个很好的示例指南,有人运行了一个简单的小程序打印了某个消息,然后他使用我不记得的方法更新了程序,突然之间程序用新的替换了旧的打印function。 我试过通过Java API来激发我的记忆以及谷歌搜索,但没有成功。 这里有人可以帮忙吗?

java内存中编译

如何在运行时从String生成字节码(Byte []),而不使用“javac”进程或类似的东西? 是否有一种简单的方法来调用编译器? 后来补充: 我选择接受最符合我情况的解决方案 。 我的应用程序是一个仍处于设计草图阶段的业余爱好项目,现在是考虑插入新技术的最佳时机。 另外,因为那个应该帮助我的人是一个JavaScript开发人员,在这种情况下,使用JavaScript解释器而不是存根编译器+ classLoader的想法似乎更吸引我。 这个问题的其他(未接受的)答案是提供信息的,据我所知,很好地回答我的问题,谢谢,但我会尝试犀牛 🙂

如何在动态编译源文件时为JavaCompiler提供接口?

我正在尝试在运行时编译和加载一个类,而不知道该类的包。 我知道该类应该遵守一个接口,以及源的位置(以及类名)。 我正在尝试以下方法: /* Compiling source */ File root = new File(“scripts”); File sourceFile = new File(root, “Test.java”); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); compiler.run(null, null, null, sourceFile.getPath()); Test.java文件看起来像什么 import foo.Itest; public class Test implements Itest{ … } 而且我得到一个cannot find symbol symbol : class Itest来自编译器的cannot find symbol symbol : class Itest错误。 如何为编译器提供接口 (已经加载)以避免此错误? [编辑 – 已解决]:错误来自于接口是ITest并且源是指Itest接口的Itest 。

如何在线程java应用程序中确定运行时的主类?

我想在运行时确定我的应用程序启动的类名,带有main()方法的类名,但我在另一个线程中,我的堆栈跟踪不会一直回到原始类。 我已经搜索了系统属性以及ClassLoader提供的所有内容,并且没有提供任何内容。 这些信息不可用吗? 谢谢。

如何检查计算机上是否安装了Java

我试图在客户端机器上安装java Windows应用程序。我想检查是否在机器上安装了需要的JRE。 我想通过java程序而不是cmd命令来检查它

Java:在运行时扩展类

我有能力在编译时扩展一个类,但我需要能够在运行时使用已经实例化的超类的实例创建该子类的实例。 这在理论上应该是可能的,因为超类构造函数已经在子类构造函数之前调用。 我无法充分访问该程序以将实例化更改为我的子类,也无法中断原始实例化。 用例:存在类X的现有实例数组。我的代码在之后加载。 我需要覆盖其中一个实例X的一个方法,我的加载子类Y扩展X.父程序只通过该数组访问对象,所以我想用我的Y实例替换该数组元素,但它需要表现得好像它最初被实例化到那个数组中。 我不能只包含超类实例和转发调用,并且重新实现超类有很多复杂的问题。 我希望更清楚。

使用AbstractRoutingDataSource动态更改数据库架构/目录

根据这篇文章 ,您可以使用Spring Framework中的AbstractRoutingDataSource动态更改应用程序使用的数据源。 但是,使用的数据源是由配置定义的,而不是以编程方式定义的。 有没有办法配置要在运行时使用的数据源? 该解决方案的可扩展性如何,即数据源数量有何限制? 谢谢!

如何找到运行Java程序的时间?

我有一个Java应用程序,我一直在努力,我只是意识到该程序必须在不到一分钟内返回一个值,但不知道如何查找或显示运行该程序所需的时间。 如何找到运行程序的时间?

我怎样才能在运行时调试jar?

我从一个非常奇怪的位置(从我的java-newbie观点来看): 使用Eclipse我写了一个“java程序”(一些带有类的.java文件),它基本上(批处理)读取文本* .csv文件,“评估”其内容,并将结果写入* _out.csv文本文件。 要找到输入文件,它使用“文件选择器”(从这里获取示例: http : //docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html ) 我调试了所有代码,并使用调试器, 它的工作原理 。 我运行了代码(主类,它按顺序调用所有其他代码), 它 在Eclipse中运行 。 我将所有项目的内容导出到“runnable jar”文件中。 请注意,文件选择器除外,这主要是一个读写的“批处理”:几乎没有用户界面。 在Eclipse中,我使用类似“ if(debug)System.out.print(”要打印的东西“)的内容显示了一些内部结果; ”在生产环境中提供设置“ debug ”TRUE而调试时为FALSE。 所有上述工作! 现在,启动runnable jar(双击jar文件,在Win / XP中), 我可以看到文件选择器,我可以使用它但是,在选择输入文件之后…… 仅此而已 :(没有用户界面) )我不知道文件是否被读取,我没有看到任何生成的输出文件,我甚至没有“控制台”列出任何中间调试消息,看看jar是否正常工作,即使我重新-export,调试变量设置为TRUE。 有没有办法“运行时调试”正在运行的jar(如VB的MsgBox,或其他东西)? 某种“日志文件”我可以“启用”或查看? (很明显,因为我的jar没有写结果文件,所以我也不能尝试编写* .log)我还要说我只能在我的机器上安装Eclipse以外的东西(而且很幸运它跑了),所以没有通常的开发人员的工具,实用程序和其他有用的东西。

使用CMD作为过程

我正试图在Windows上直接运行命令(Linux上的终端)。 我有以下代码。 它表现得非常奇怪。 首先,运行时程序不会打印任何内容。 其次,当调试并逐步执行时,程序将打印默认的CMD文本和输入行。 最后,我似乎无法写入CMD,因此它将执行命令。 这是我的代码。 我猜它可能是一个线程问题,但我不熟悉Runtime。 Runtime r = Runtime.getRuntime(); try { Process p = r.exec(“cmd”); InputStream iStream = p.getInputStream(); BufferedReader sReader = new BufferedReader(new InputStreamReader(iStream)); while(sReader.ready()) { System.out.print((char)sReader.read()); } OutputStream oStream = p.getOutputStream(); BufferedWriter sWriter = new BufferedWriter(new OutputStreamWriter(oStream)); sWriter.write(“mkdir test”); sWriter.newLine(); while(sReader.ready()) { System.out.print((char)sReader.read()); } } catch(Exception e) { e.printStackTrace(); } […]