草庐IT

pre-commit-hook

全部标签

java - 确定 java 关闭钩子(Hook)线程中的退出状态

我想在关闭钩子(Hook)运行时确定进程的退出状态。我想要一个基于状态码(0或非零)的逻辑(例如:如果零不做任何其他非零发送警报电子邮件)你知道我怎样才能得到这些信息吗? 最佳答案 我试图覆盖SecurityManagercheckExit(intstatus)方法-如果在任何地方显式调用System.exit(status)则此方法有效-但是,当应用程序“正常”退出(无Activity线程)或错误终止VM时,它不会设置状态。importjava.io.BufferedReader;importjava.io.IOException

java - Windows 中的 JNA 键盘钩子(Hook)

我整理了一个JNA代码,用于在Windows中安装键盘Hook(使用JNA示例)。代码编译和一切,我安装了Hook(我成功获得了Hook的句柄),也可以成功卸载Hook。但是,当我按下键盘上的任何键时,回调永远不会被调用。这是我的代码(其中大部分是从JNA示例中获得的类型定义,我的部分直接转到“main”)importcom.sun.jna.IntegerType;importcom.sun.jna.Pointer;importcom.sun.jna.PointerType;importcom.sun.jna.Structure;importcom.sun.jna.FromNative

java - Hook Java 中的现有方法

我想HookJava中的System.out.print方法,并能够在调用方法部分之前读取/更改方法中使用的变量,该部分实际上将字符串添加到输出流中。在C++中,我只是绕过函数,或设置一个int3指令,以便我可以访问寄存器,但在Java中,我不知道如何完成类似的事情。 最佳答案 您可以重写方法的字节码,并在过程中捕获/更改局部变量。这不是微不足道的。查看一些注释here.也许您真正想要的是Java调试器?您可以使用eclipse将调试器连接到远程进程、添加断点以及捕获/更改局部变量。您要解决的真正问题是什么?

java - 在 JTable 仍处于编辑模式时强制将 "commit"数据建模

我有一个JTable,如下所示。因此,当JTable仍处于编辑模式时(键盘光标在Dividend列闪烁),直接单击“确定”不会将数据提交到表模型中。单击“确定”仅关闭对话框。我需要明确地按ENTER键,以便将数据提交到表模型中。当JTable仍处于编辑模式时,在关闭对话框之前,有什么方法可以告诉JTable说“嘿,是时候将更改提交到模型中了”这个对话框的源码如下DialogBoxSourceCode.请查看jButton1ActionPerformed以了解按下OK时执行的代码。 最佳答案 我不确定它是否有效(如果有SCCE就好了)

java - Java 中的钩子(Hook)和抽象方法的区别

这是我大学学习资料中引用的问题。这对我来说完全没有意义。对我来说,钩子(Hook)是(主要是顺序但不仅仅是)程序中的指定点,您可以在其中指定要执行的自己的方法或回调。例如,一个应用程序有一个“onbeforeshutdownhook”,我可以在那里注册我的回调方法,在关闭之前将用户数据保存到磁盘。抽象方法是self解释的。对我来说这是完全不同的东西?还是这些东西中的任何一个都有我不知道的第二个含义?我进行了快速搜索,但没有找到任何东西。 最佳答案 我真的不认为这两件事非常相似。它们可能相关的一种方式如下所示:publicabstra

javassist 在 pre-main 方法中加载一个类文件(java instrumentation)

我正在尝试使用javassist加载特定类,我在pre-main方法中执行此操作,如下所示:publicbyte[]transform(ClassLoaderloader,StringclassName,ClassclassBeingRedefined,ProtectionDomainprotectionDomain,byte[]classfileBuffer)throwsIllegalClassFormatException{byte[]byteCode=classfileBuffer;if(className.toLowerCase().endsWith("class1")){Cl

java - Maven 故障保护插件 : how to use the pre- and post-integration-test phases

我并不完全清楚如何最好地使用MavenFailsafe插件进行集成测试。我的用例是针对本地MySQL数据库测试SQL查询。据我所知,数据库应该在pre-integration-test阶段启动,并在post-integration-test阶段关闭。但是我该如何指定呢?我应该在我的pom.xml中放入命令行吗?或者我应该使用特定注释来注释的方法? 最佳答案 在常规built-inmavenlifecycles(jar,war...)pre-integration-test和post-integration-test测试阶段未绑定(b

带有 System.exit 的 Java 静态 block 关闭 Hook

这段代码会死锁:publicclassMain{staticpublicfinalObjecta=newObject();static{Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){if(a==null);}});System.exit(0);}staticpublicvoidmain(finalString[]args){}}此代码将正常退出:publicclassMain{staticpublicfinalObjecta=newObject();static{finalObject

java - Cygwin CTRL-C(信号中断)无法正常工作 - JVM 关闭 Hook 未启动

我正在开发一个Java应用程序,它利用关闭Hook来清理程序的终止/中断,但我注意到Cygwin的CTRL-C实现似乎不会触发关闭Hook。从表面上看,它似乎中断了进程,将控制权交还给命令行,但进程的关闭Hook根本没有被触发,因此不会发生清理。在cmd中它们被捕获,但由于各种限制,我需要以某种方式让它们在Cygwin中工作。是否有任何方法可以通过Cygwin在正在运行的进程中触发SIGINT,或者我可以使用关闭Hook的替代方法来清理中断和终止? 最佳答案 Bash通过中间bash进程(bashshell->bash->java)

java - 如果 java.sql.Connection#commit() 抛出异常,是否需要回滚?

根据JAVAdocumentation,Connection#commit()可以抛出SQLException。我的问题是在这种情况下是否仍应发出回滚。例如:Connectioncon=null;try{//assumethismethodreturnsanopenedconnectionwithsetAutoCommit(false)con=createConnection();//doDBstuffcon.commit();}catch(SQLExceptione){if(con!=null){//whatifcon.commit()failed,isthisstillnecess