当Java VM与EXCEPTION_ACCESS_VIOLATION崩溃并生成hs_err_pidXXX.log文件时,这表示什么?错误本身基本上是一个空指针异常.它总是由JVM中的错误引起,还是有其他原因,如硬件故障或软件冲突?
编辑:有一个本机组件,这是win32上的SWT应用程序.
我正在扩展一个我无法改变的库中定义的类:
public class Parent
{
public void init(Map properties) { ... }
}
Run Code Online (Sandbox Code Playgroud)
如果我正在定义一个扩展Parent的类'Child'而我正在使用带有泛型的Java 6,那么在不获取未经检查的警告的情况下覆盖init方法的最佳方法是什么?
public class Child extends Parent
{
// warning: Map is a raw type. References to generic type Map<K,V> should be parameterized
public void init(Map properties) { }
}
Run Code Online (Sandbox Code Playgroud)
如果我添加通用参数,我得到:
// error: The method init(Map<Object,Object>) of type Child has the same erasure as init(Map) of type Parent but does not override it
public void init(Map<Object,Object>) { ... }
// same error
public void init(Map<? extends Object,? …Run Code Online (Sandbox Code Playgroud) 在Tomcat中为单个Web应用程序设置时区的最佳方法是什么?我已经看到了更改Tomcat的命令行参数或环境变量的选项,但是有没有办法在WAR文件中设置它自包含而不依赖于任何Tomcat配置?
编辑:要重新强调,我正在寻找一个可以包含在WAR文件中的解决方案,而不依赖于Tomcat配置.换句话说,一个Web应用程序是否可以配置为具有与在同一Tomcat实例中运行的其他应用程序不同的时区?
是否有可能在Java中反射性地实例化泛型类型?使用这里描述的技术我得到一个错误,因为类标记不能是通用的.以下面的例子为例.我想实例化一些实现Creator的Creator子类.实际的类名称作为命令行参数传入.我们的想法是能够在运行时指定Creator的实现.还有另一种方法来完成我在这里要做的事情吗?
public interface Creator<T> {
T create();
}
public class StringCreator implements Creator<String> {
public String create() { return new String(); }
}
public class FancyStringCreator implements Creator<String> {
public String create() { return new StringBuffer().toString(); }
}
public static void main(String[] args) throws Exception {
Class<?> someClass = Class.forName(args[0]);
/*ERROR*/Class<? extends Creator<String>> creatorClass = someClass.asSubclass(Creator.class);
Constructor<? extends Creator<String>> creatorCtor = creatorClass.getConstructor((Class<?>[]) null);
Creator<String> creator = creatorCtor.newInstance((Object[]) null);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我喜欢马库斯的方法是最简单务实的,不会绕过整个仿制品.我可以在我的情况下使用它,因为我可以指定传递的类必须是StringCreator的子类.但是,正如Ericson指出的那样,通用信息仍然存在于类型级别,而不是在运行时级别,因此仍然可以反思地检查给定的类是否实现了正确的泛型类型.
如果我有一个带有一个或多个子元素的元素,那么min/maxoccurs属性应该在xsd:sequence元素,xsd:元素,两者还是两者上?
<xsd:element name="books">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded"> <!-- here? -->
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> <!-- or here? -->
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud) 如果我有一个动作,其结果是redirectAction到另一个类中的另一个动作,是否有可能在结果动作中显示验证错误?例如,在下面的示例中,如果用户执行actionA(没有与之关联的视图),并且存在错误,是否有任何方法可以在actionB结果(foo.jsp)中显示这些错误?或者我是以完全错误的方式解决这个问题?
<package name="a" extends="struts-default" namespace="/a">
<action name="actionA" class="actionAClass">
<result name="input" type="redirectAction">
<param name="actionName">actionB</param>
<param name="namespace">/b</param>
</result>
<result type="redirectAction">
<param name="actionName">actionB</param>
<param name="namespace">/b</param>
</result>
</action>
</package>
<package name="b" extends="struts-default" namespace="/b">
<action name="actionB" class="actionBClass">
<result>/foo.jsp</result>
</action>
</package>
Run Code Online (Sandbox Code Playgroud) 当您使用生产者/消费者关系设计两个类时,如何避免循环依赖?这里ListenerImpl需要对Broadcaster的引用才能注册/取消注册,而Broadcaster需要一个引用回侦听器才能发送消息.此示例使用Java,但它可以应用于任何OO语言.
public interface Listener {
void callBack(Object arg);
}
public class ListenerImpl implements Listener {
public ListenerImpl(Broadcaster b) { b.register(this); }
public void callBack(Object arg) { ... }
public void shutDown() { b.unregister(this); }
}
public class Broadcaster {
private final List listeners = new ArrayList();
public void register(Listener lis) { listeners.add(lis); }
public void unregister(Listener lis) {listeners.remove(lis); }
public void broadcast(Object arg) { for (Listener lis : listeners) { lis.callBack(arg); } }
}
Run Code Online (Sandbox Code Playgroud) 我正在维护一个较旧的Java代码库(jvm 1.4),它似乎使用克隆作为对象实例化的替代方案,我猜测它是一种性能优化.这是一个人为的例子:
public class Foo {
private SomeObject obj; // SomeObject implements Cloneable
public Foo() {
obj = new SomeObject();
obj.setField1("abc"); // these fields will have the same value every time
obj.setField2("def");
}
public void doStuff() {
SomeObject newObj = obj.clone(); // clone it instead of using a factory method
// do stuff with newObj
}
}
Run Code Online (Sandbox Code Playgroud)
关于过早优化的常见警告尽管如此,这实际上是一个推荐的成语吗?
在什么情况下java.util.zip.ZipFile.close()会抛出IOException?它的方法签名表明它可以被抛出,但是从源代码中似乎没有任何可能发生这种情况的地方,除非它是在本机代码中.如果有异常,可以采取哪些纠正措施?
任何人都可以推荐一个GUI构建工具来使用AJAX创建DHTML Web应用程序来与Web服务后端进行通信吗?我想避免不得不设计HTML,编组/解组数据,检查浏览器兼容性等等.该工具应该有一个小部件库,可以放入应用程序并连接到功能,并且可以扩展足以能够定义自定义小部件.当然,免费和/或开源是可取的,但我也会考虑专有工具.
GUI工具的选择在多大程度上会影响我将用于后端的平台或语言?如果GUI只是调用Web服务,那么我应该能够在服务器端使用任何东西来提供该接口,但也许一些gui端工具使用需要一些特定服务器端代码的专有数据交换格式?
编辑:我不需要可以拖动的小部件,我想要一个允许轻松构建gui的IDE(即RAD工具).
// A Mutex allows threads mutually exclusive access to a resource.
//-----------------------------------------------------------------------
class Mutex
{
private:
CRITICAL_SECTION m_mutex;
public:
Mutex() { InitializeCriticalSection(&m_mutex); }
~Mutex() { DeleteCriticalSection(&m_mutex); }
void acquire() { EnterCriticalSection(&m_mutex); }
void release() { LeaveCriticalSection(&m_mutex); }
};
Run Code Online (Sandbox Code Playgroud)
使用Entrek Codesnitch软件调试和测试任何内存泄漏等,它报告以下错误:
InitializeCriticalSection Error: lpCriticalSection (0x000387d4) points to an invalid
memory location (0x00018984) Mutex::Mutex in lockmutex.h, line 29
Run Code Online (Sandbox Code Playgroud)
也许我所有不眠之夜终于到了我的身边.但我不明白它究竟在抱怨什么.有任何想法吗?
java标准库中是否有一个方便的方法来检查EnumMap中所有可能的键是否都映射到一个值?
我可以编写自己的方法,如:
public static <T extends Enum<T>> boolean areAllValuesMapped(EnumMap<T, ?> map, Class<T> enumClass)
{
return map.keySet().equals(EnumSet.allOf(enumClass));
}
Run Code Online (Sandbox Code Playgroud)
但后来我重复了Class参数(已经在EnumMap构造函数中给出)以及创建一次性KeySet和EnumSet对象.EnumMap应该有足够的信息来作为内部操作有效地完成这项工作.