如何让每个JVM启动的 时候都自动加载某个程序? 比如我写了一个程序叫A,另外有任意的一个java 程序,比如叫App,我希望自己的程序A在JVM启动时能自动运行,从而可以监控App的 运行情况,请问怎么办?因为资料比较少,懂的人估计不多哦 !而且A和 App要在同一个JVM里运行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用Socket连接,不知道如何? 既然事A去监控APP,为什么一定要jvm启动的时候就加载A让APP启动的时候加载A不就ok了 每一个JAVA程序运行既是一个JVMLZ对JVM的理解有误 实现LZ的想法只能每个JAVA程序都要写入调用您写的类A了。建议LZ看下《深入JAVA虚拟机》 楼上的方法学习周期太长了。把你的默认java.exe(或者linux下的java)改名,然后写一个同名的批处理文件(或者shell脚本),叫做java.bat(或者java)。 楼主去看一下JVMPI相关资料,应该是有接口留给你的,不过启动的时候可能就不能用java启动了。或者去eclipse.org上看看tptp这个项目吧。基本上这个已经超出了java语言的范围了,看深入java虚拟机也没用。 可以的。 在公共入口的类中调用 static{ System.getruntime.exec("A.exe")}或者使用bat 看来是不可能了?总结一下,1 每个JVM就是一个进程,并不意味着只能在一个JVM里运行一个程序,比如JVMPI就是另一个在JVM里运行的程序,不过不是java程序2 如果要让自己的java程序在每个JVM实例运行时自动装载,就必须要JVM支持,但JVM是否以某种比如JVMPI的机制支持这种类装载还不清楚。3 我想做的实际上是一个通用的程序,对所有的java程序都能起作用(就是说随便给我个字节码的java程序,我的程序都能对它起作用),所以,象static{System.getruntime.exec("A.exe")}类似的解决办法是不适用的继续研究中,等待进一步结论 不知道我的理解对不对,把A(假设为可执行文件)的文件尾部附加java.exe,同时把这个捆绑程序命名为java.exe,执行时肯定先执行A,再把java.exe通过流的形式作为文件分离出来,关闭A(为了重命名文件),新开进程执行java.exe(环境变量可能是难题),新开进程监控java.exe... 各位,我找到解决办法了,用java5新增的instrument包里的premain函数,java -javaagent:myjar.jar App1.写一个AAA类,其中有一个public static void premain(Instrument inst, ...)(第二个参数忘记了)2.把该AAA类打包成myjar.jar, jar里的manifest文件必须有一条PreMain-Class: AAA3.java -javaagent:myjar.jar App这样,在执行App的main函数之前就会先执行premain函数,所以,想做什么事都可以写在premain函数里 LZ那要不是控制台程序 没有MAIN函数怎么办? 没有main函数?是在容器里跑的程序吗?那就只能把App换成你的容器的程序了。具体我没尝试过。你这么多星,不会这个都不明白吧,也许是我不明白你的意思 给你一个正解吧:用java assistive technology, 可以做出来一个类似windows平台的spy++工具。 关于java不用odbc设置数据源连接access以及图形界面的编程问题 protected transient final Log这是什么,干什么的 包导入的问题 求助:如何动态显示数据(在线等) 关于文件删除f.delete()的问题?? 如何用Java实现这种功能 在linux下怎么安装jdk1.4? 不会! 多线程问题!!! 怎样用java 写一个类似画板的程序 在JBuilder的html中可以预览 但在ie中却提示class文件找不到 嵌套的try...catch语句好不好 原子锁怎样改写
让APP启动的时候加载A不就ok了
LZ对JVM的理解有误
实现LZ的想法只能每个JAVA程序都要写入调用您写的类A了。
建议LZ看下《深入JAVA虚拟机》
把你的默认java.exe(或者linux下的java)改名,然后写一个同名的批处理文件(或者shell脚本),叫做java.bat(或者java)。
static{
System.getruntime.exec("A.exe")
}或者使用bat
总结一下,
1 每个JVM就是一个进程,并不意味着只能在一个JVM里运行一个程序,比如JVMPI就是另一个在JVM里运行的程序,不过不是java程序
2 如果要让自己的java程序在每个JVM实例运行时自动装载,就必须要JVM支持,但JVM是否以某种比如JVMPI的机制支持这种类装载还不清楚。
3 我想做的实际上是一个通用的程序,对所有的java程序都能起作用(就是说随便给我个字节码的java程序,我的程序都能对它起作用),所以,象static{
System.getruntime.exec("A.exe")
}
类似的解决办法是不适用的
继续研究中,等待进一步结论
java -javaagent:myjar.jar App
1.写一个AAA类,其中有一个public static void premain(Instrument inst, ...)(第二个参数忘记了)
2.把该AAA类打包成myjar.jar, jar里的manifest文件必须有一条PreMain-Class: AAA
3.java -javaagent:myjar.jar App这样,在执行App的main函数之前就会先执行premain函数,所以,想做什么事都可以写在premain函数里