草庐IT

java - 在 JUnit 测试中处理 System.exit(0)

我正在为现有的JavaSwing应用程序实现一些测试,以便我可以安全地重构和扩展代码而不会破坏任何东西。我从JUnit中的一些单元测试开始,因为这似乎是最简单的入门方法,但现在我的首要任务是创建一些端到端测试来测试整个应用程序。我在每个测试中重新启动应用程序,方法是将每个测试方法放在一个单独的测试用例中,并在Ant的junit任务中使用fork="yes"选项.但是,我想作为测试实现的一些用例涉及用户退出应用程序,这导致调用System.exit(0)的方法之一。这被JUnit视为错误:junit.framework.AssertionFailedError:ForkedJavaVM异

java - 寻找可扩展的 "at"实现

我正在寻找具有高可用性的可扩展“at”替代品。它必须支持在运行时添加和删除作业。一些背景:我有一个应用程序可以触发数百万个事件,每个事件只发生一次。我不需要类似cron的机制(每个月的第一个星期日等),只需要日期、时间和上下文。目前我正在使用Quartzscheduler,虽然这是一个非常好的项目,但由于它在下划线上执行的基本锁定,即使经过大量调整(分片、增加轮询间隔等),它也很难处理我们抛给它的事件数量数据库。此外,这对我们来说有点矫枉过正,因为基本上我们有数百万个一次性触发器,而且作业数量相对较少。我会很感激任何建议 最佳答案

java - 有没有办法在不调用 System.exit() 的情况下终止使用 java3d 的 java 应用程序?

Java3D启动了几个系统线程并且没有在它们上设置isDaemon标志。当我处置我的应用程序的(唯一的)JFrame时,它​​不会终止,因为这些线程仍在运行。调用System.exit()似乎是终止应用程序的唯一方法。(或者当然是从外部杀死它)。因为我不喜欢调用System.exit()我尝试了以下方法(但没有成功):在VirtualUniverse上调用removeAllLocales():这会终止大部分线程,但仍然有一个(名为J3D-Renderer-1)剩余。使用反射获取对javax.media.j3d.MasterControl中的字段ThreadGrouprootThread

java - "Could not find the main class: XX. Program will exit."

我已经设法在命令提示符下运行我的jar文件,但它总是给我一个响应Couldnotfindthemainclass:XX.Programwillexit.请帮帮我,谢谢。 最佳答案 参见SettinganApplication'sEntryPointIfyouhaveanapplicationbundledinaJARfile,youneedsomewaytoindicatewhichclasswithintheJARfileisyourapplication'sentrypoint.Youprovidethisinformation

java - 卡尺错误 : CICompilerCount of 1 is invalid; must be at least 2

我有一个卡尺基准(1.0-beta-2):importcom.google.caliper.Benchmark;importcom.google.caliper.runner.CaliperMain;publicclassMyBenchmark{@Benchmarkpublicinta(intrep){return0;}publicstaticvoidmain(String[]args){CaliperMain.main(MyBenchmark.class,args);}}我从eclipse或命令行运行它:mvnexec:java-Dexec.mainClass="com.google

Java 泛型 : Accessing Generic Type at runtime

我希望在运行时访问已声明字段的通用类型。我以前的印象是,由于Java类型删除,这是不可能的。然而,情况并非如此,因为一些众所周知的框架在运行时通过反射利用泛型类型。例如,Guice将根据您提供的通用类型实现一个Provider:publicclassInjectable{@InjectprivateProvidersomeTypeProvider;}如何通过反射API访问字段或任何此类类型/方法/等的“So​​meType”通用属性?此外,了解如何通过Java6AnnotationProcessorAPI访问这些通用类型属性也会很有帮助。谢谢。编辑:谢谢大家的指点。我找到了一种使用ha

java - eclipse |马文 : Multiple annotations found at this line

我正在尝试将Maven项目导入Eclipse。我正在使用Helios。我已经下载了m2eclipse。我已经导入了项目。但是我在编译项目时遇到了很多麻烦。完整项目包含5个Eclipse项目,即:prj1、prj2、prj3、prj4和prj5如果我在prj1/pom.xml查看(Eclipse)标记,我会遇到以下问题:Multipleannotationsfoundatthisline:-Missingartifactlog4j:log4j:jar:1.2.15:compile-Missingartifactorg.apache.xmlbeans:xmlbeans-xpath:jar:

java - Android4OpenCV : setting resolution at startup

我正在使用Android4OpenCV做一些实时图像处理,我想使用相机可以提供的最小分辨率。默认分辨率是相机可以提供的最大分辨率。我正在查看3rdexample,它允许用户通过菜单更改分辨率。我想修改该示例以在启动时更改分辨率,而不是要求用户浏览菜单。为此,我只需向空的onCameraViewStarted()函数添加两行:publicvoidonCameraViewStarted(intwidth,intheight){android.hardware.Camera.Sizeres=mOpenCvCameraView.getResolutionList().get(mOpenCvCa

带有 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 8 方法引用 : validation of methods at compile time

我想使用Java8的新方法引用在编译时提供对某些代码的更多验证。假设我有一个validateMethod方法,它需要一个参数:要验证的“方法”。例如:validateMethod(foo,"methodA");此处,该方法将验证foo#methodA()是否存在,在运行时。使用方法引用,我希望能够做到:validateMethod(foo::methodA);因此该方法的存在将在编译时验证。问题是方法引用似乎必须分配给功能接口(interface)。例如,这个:Objectdummy=foo::methodA;生成错误:“此表达式的目标类型必须是函数式接口(interface)”。如果