从Java启动Spring应用程序的exception

我能够使用Maven编译并启动我的Spring项目: mvn -e clean compile exec:java -Dexec.mainClass=de.fraunhofer.fkie.tet.vmware.manager.Test 但是,当我使用maven-assembly-plugin (包括applicationContext.xml )将所有jar组装在一个文件中时,我总是在java执行期间得到一个Exception : java -cp target/test-jar-with-dependencies.jar:. de.fraunhofer.fkie.tet.vmware.manager.Test INFO: Loading XML bean definitions from class path resource [applicationContext.xml] Sep 6, 2010 10:37:21 AM org.springframework.util.xml.SimpleSaxErrorHandler warning WARNING: Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document ‘http://www.springframework.org/schema/context/spring-context.xsd’, because 1) could not find the document; 2) the document […]

为什么我们不必将run-catch添加到RuntimeException?

我想问为什么我们不必将run-catch块添加到RuntimeException而我们应该使用其他exception? 我的意思是: public class Main { public static void main(String[] args) { throw new RuntimeException(); } } 编辑:当我说: throw new RuntimeException(); 很明显会发生exception,为什么编译器不禁止这样做呢?

ClientAbortException:java.net.SocketException:通过对等方重置连接:套接字写入错误

从数据库列中检索文件对象时,我经常收到以下错误。 我该如何解决这个问题? May 8, 2009 3:18:14 PM org.apache.catalina.core.StandardHostValve status WARNING: Exception Processing ErrorPage[errorCode=404, location=/error.jsp] ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293) at org.apache.catalina.connector.Response.flushBuffer(Response.java:537) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:286) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) Caused by: java.net.SocketException: […]

构造函数和指令重新排序

我刚碰到一篇文章 ,提出了我以前从未听说过的声明,在其他任何地方找不到。 声明是从另一个线程的角度来看,构造函数返回的值的赋值可以相对于构造函数内的指令重新排序。 换句话说,声明是在下面的代码中,另一个线程可以读取尚未设置x的值的非空值。 class MyInt { private int x; public MyInt(int value) { x = value; } public int getValue() { return x; } } MyInt a = new MyInt(42); 这是真的? 编辑: 我认为从线程执行MyInt a = new MyInt(42)的角度来看, x的赋值与a的赋值有一个先发生的关系。 但是这两个值都可以缓存在寄存器中,并且它们可能不会按照它们最初写入的顺序刷新到主存储器。 因此,在没有内存屏障的情况下,另一个线程可以在写入x的值之前读取a的值。 正确? 因此,基于axtavt的答案和随后的评论,这些线程安全评估是否正确? // thread-safe class Foo() { final int[] x; public Foo() { int[] […]

如何在Java中使用double转换为int

我是Java的新手,想知道如何对int转换工作? 我理解通过采用低32位来实现long很简单,但是对于int(32位)来说,加倍(64位)呢? 来自二进制二进制的64位是双精度浮点格式(尾数),那么它如何在内部转换为int?

在Java中检查vs未经检查的exception

我在理解Java中已checked和uncheckedexception之间的差异时遇到了一些问题。 首先, checkedexception应该在编译期间查找exception。 在不同来源中提供的示例引用数据库连接,文件处理作为其中一些,而uncheckedexception应该在程序员的部分寻找错误,例如超出数组范围的索引等。 不应该反过来吗? 我的意思是,数据库连接是在运行时完成的,对吧? 文件处理也是如此。 您在编译期间没有打开文件句柄,那么为什么在编译期间会查找可能的错误? 另一方面,在程序中已经完成了索引超出其范围的数组,可以在编译期间检查(如果用户在运行时提供exception索引,那么它可以是运行时)问题)。 我在这里想念的是什么? 2其次, RunTimeException本身如何被unchecked ,子类Exception ,哪个被checked ? 这意味着什么? 我在Herbert Schildt的书中找到了一个例子,解释了checkedexception的用法: class ThrowsDemo { public static char prompt(String str) throws java.io.IOException { System.out.print(str + “: “); return (char) System.in.read(); } public static void main(String args[]) { char ch; try { ch = prompt(“Enter a letter”); } catch(java.io.IOException exc) […]

java的代数方程解析器

我需要一个库来解析方程式,给出结果给出输入。 例如这样的事情: String equation = “x + y + z”; Map vars = new HashMap(); vars.add(“x”, 2); vars.add(“y”, 1), vars.add(“z”, 3); EquationSolver solver = new EquationSolver(equation, vars); int result = solver.getResult(); System.out.println(“result: ” + result); 并评估为:6 是否有任何类型的java库可以为我做到这一点? 谢谢

如何在MongoDB中更新特定文档的特定嵌入文档的值?

我的文档中有以下结构: { _id : ObjectId(“43jh4j343j4j”), array : [ { _arrayId : ObjectId(“dsd87dsa9d87s9d7”), someField : “something”, someField2 : “something2” }, { _arrayId : ObjectId(“sds9a0d9da0d9sa0”), someField : “somethingElse”, someField2 : “somethingElse2” } ] } 我想更新someField和someField2但仅针对数组中的一个项目,即匹配_arrayId的项目 (例如_arrayId : ObjectId(“dsd87dsa9d87s9d7”) ;并且仅针对此文档(例如_id : ObjectId(“43jh4j343j4j”) )没有别的。 arrayIds并不是文档所特有的,这就是我需要它来用于特定文档的原因。 如果我想在数组中为它所存在的每个文档更新该值,我可以使用$ positional operator ,但这不是我想要的。 我试图在java中实现这一点,但命令行解决方案也可以。

Java程序中是否必须使用Main方法?

编写java程序需要主要方法吗? 这是我的代码: package example; public class HelloWorld { public HelloWorld() { } public String getHelloWorld() { return “Hello From Java!”; } } 它在编译时显示错误: java.lang.NoSuchMethodError: main Exception in thread “main”

如何防止从特定类调用公共方法

我有一个现有的类,我想添加一个方法。 但我希望只从特定类的特定方法调用该方法。 有什么方法可以阻止来自其他类/方法的调用吗? 例如,我有一个现有的A类 public final class A { //other stuff available for all classes/methods //I want to add a method that does its job only if called from a specific method of a class, for example: public void method() { //proceed if called from Class B.anotherMethod() else throw Exception } } 这样做的一种方法是在method()获取StackTrace ,然后确认父方法? 我正在寻找的是一种更清洁,更可行的解决方案,如模式或其他东西。