如何让每个JVM启动的 时候都自动加载某个程序?

dash_running 2007-07-12 03:51:48
比如我写了一个程序叫A,另外有任意的一个java 程序,比如叫App,
我希望自己的程序A在JVM启动时能自动运行,从而可以监控App的 运行情况,请问怎么办?因为资料比较少,懂的人估计不多哦 !而且A和 App要在同一个JVM里运行
...全文
533 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
haixiao189 2008-11-11
  • 打赏
  • 举报
回复
给你一个正解吧:用java assistive technology, 可以做出来一个类似windows平台的spy++工具。
age_x1 2007-08-15
  • 打赏
  • 举报
回复
可以去sun上问
dash_running 2007-07-24
  • 打赏
  • 举报
回复
各位,我找到解决办法了,用java5新增的instrument包里的premain函数,
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函数里
dash_running 2007-07-24
  • 打赏
  • 举报
回复
没有main函数?是在容器里跑的程序吗?那就只能把App换成你的容器的程序了。具体我没尝试过。你这么多星,不会这个都不明白吧,也许是我不明白你的意思
真的很小奚 2007-07-24
  • 打赏
  • 举报
回复
LZ那要不是控制台程序 没有MAIN函数怎么办?
IhaveGotYou 2007-07-23
  • 打赏
  • 举报
回复
不知道我的理解对不对,把A(假设为可执行文件)的文件尾部附加java.exe,同时把这个捆绑程序命名为java.exe,执行时肯定先执行A,再把java.exe通过流的形式作为文件分离出来,关闭A(为了重命名文件),新开进程执行java.exe(环境变量可能是难题),新开进程监控java.exe...
dash_running 2007-07-19
  • 打赏
  • 举报
回复
看来是不可能了?
总结一下,
1 每个JVM就是一个进程,并不意味着只能在一个JVM里运行一个程序,比如JVMPI就是另一个在JVM里运行的程序,不过不是java程序
2 如果要让自己的java程序在每个JVM实例运行时自动装载,就必须要JVM支持,但JVM是否以某种比如JVMPI的机制支持这种类装载还不清楚。
3 我想做的实际上是一个通用的程序,对所有的java程序都能起作用(就是说随便给我个字节码的java程序,我的程序都能对它起作用),所以,象static{
System.getruntime.exec("A.exe")
}
类似的解决办法是不适用的
继续研究中,等待进一步结论
yulin001122 2007-07-15
  • 打赏
  • 举报
回复
可以的。 在公共入口的类中调用
static{
System.getruntime.exec("A.exe")
}

或者使用bat
真的很小奚 2007-07-13
  • 打赏
  • 举报
回复
每一个JAVA程序运行既是一个JVM
LZ对JVM的理解有误
实现LZ的想法只能每个JAVA程序都要写入调用您写的类A了。
建议LZ看下《深入JAVA虚拟机》
DeepNightTwo 2007-07-13
  • 打赏
  • 举报
回复
楼主去看一下JVMPI相关资料,应该是有接口留给你的,不过启动的时候可能就不能用java启动了。或者去eclipse.org上看看tptp这个项目吧。基本上这个已经超出了java语言的范围了,看深入java虚拟机也没用。
weihthchk 2007-07-13
  • 打赏
  • 举报
回复
楼上的方法学习周期太长了。
把你的默认java.exe(或者linux下的java)改名,然后写一个同名的批处理文件(或者shell脚本),叫做java.bat(或者java)。
schumiXsuse 2007-07-12
  • 打赏
  • 举报
回复
可以参考Jprofile的实现.
jason_wx 2007-07-12
  • 打赏
  • 举报
回复
既然事A去监控APP,为什么一定要jvm启动的时候就加载A
让APP启动的时候加载A不就ok了
frilly 2007-07-12
  • 打赏
  • 举报
回复
利用Socket连接,不知道如何?
约翰羊 2007-07-12
  • 打赏
  • 举报
回复
不会,帮顶

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧