标签: java-7

如何在java 7中运行单元测试:java.lang.VerifyError:在分支目标处期望一个stackmap帧

嗨我正在使用maven 3.0.3运行maven测试,使用hibernate 4.0.0最终版本和jdk7 update 2上的spring 3.1.

我收到以下错误.

Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 63 in method ${myDomainClass}.equals(Ljava/lang/Object;)Z at offset 24
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getDeclaredMethods(Class.java:1808)
    at org.hibernate.property.BasicPropertyAccessor.getterMethod(BasicPropertyAccessor.java:352)
    at org.hibernate.property.BasicPropertyAccessor.getGetterOrNull(BasicPropertyAccessor.java:331)
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:314)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:310)
    at org.hibernate.internal.util.ReflectHelper.getter(ReflectHelper.java:250)
    at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:229)
    at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:314)
    at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:447)
    at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:380)
    at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:320)
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:171)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3377)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3369)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3357)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:184)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:314)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
Run Code Online (Sandbox Code Playgroud)

我的Equals方法使用了commons-lang 2.6中的EqualsBuilder.我设置了以下maven opts

SET MAVEN_OPTS=%MAVEN_OPTS% -XX:-UseSplitVerifier
Run Code Online (Sandbox Code Playgroud)

在阅读了这个 …

java equals java-7 spring-3 hibernate-4.x

12
推荐指数
1
解决办法
9083
查看次数

jdk1.7的javac在没有-cp选项的情况下找不到javafx jar

我在本网站和其他地方读过几个问题,表明安装Oracle JDK7时,没有必要在正确安装JDK时指定jfxrt.jar的类路径.不幸的是,我的安装似乎不正确,但我无法弄清楚出了什么问题.

我为我的Red Hat Enterprise Linux 6.2服务器使用了正确的RPM,当我将jfxrt.jar添加到External Jars时,我能够在Eclipse中构建JavaFX应用程序.但是当尝试从命令行编译和运行时,除非我为javac和java指定-cp选项,否则它找不到JavaFX类.服务器最初使用的是openjdk-1.6,但我使用了替代方法来配置javac和java以指向新安装的JDK.除了这个问题,它看起来工作正常.

我发现在尝试运行JavaFX Exporter时,同样的问题困扰着我.我试图导出一个在Eclipse中运行良好的项目.但是在尝试运行时找不到JavaFX类.我还没有弄清楚如何告诉导出器jfxrt.jar文件所在的位置.

作为参考,jfxrt.jar位于我系统上的/usr/java/jdk1.7.0_21/jre/lib/jfxtr.jar中.

java-7 javafx-2

12
推荐指数
1
解决办法
1万
查看次数

在Runtime.getRuntime().exec中有两个可执行文件的空格

我有一个命令,我需要在这些行中使用java运行:

    C:\path\that has\spaces\plink -arg1 foo -arg2 bar "path/on/remote/machine/iperf -arg3 hello -arg4 world"
Run Code Online (Sandbox Code Playgroud)

当路径没有空格时,此命令工作正常,但是当我有空格时,我似乎无法使其工作.我尝试过以下操作,运行Java 1.7

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf -arg3 hello -arg4 world"
Runtime.getRuntime().exec(a);
Run Code Online (Sandbox Code Playgroud)

以及

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf", "-arg3 hello", "-arg4 world"
Runtime.getRuntime().exec(a);
Run Code Online (Sandbox Code Playgroud)

但似乎都没有做任何事情.我有什么问题吗?

java process runtime.exec java-7

12
推荐指数
1
解决办法
1万
查看次数

使用ListIterator的集合,是一个唯一的列表

这在最近的一个项目中让我烦恼,我的Google phoo让我无法找到合适的答案.

是否有一个集合,可以访问,ListIterator但也只允许集合内的唯一值?

为此推理,我有一个项目集合,在这个集合中应该只有每个元素之一.我也希望能够在两个方向上遍历这个集合.我希望它可以被排序或允许我使用它进行排序Collections.Sort();

我找不到任何合适的东西,不得不使用以下代码编写自己的类:

public class UniqueArrayList<E> extends ArrayList<E> {
    @Override
    public boolean add(E element){
        if (this.contains(element))
            return false;
        else
            return super.add(element);
    }

    @Override
    public void add(int index, E element){
        if (this.contains(element))
            return;
        else
            super.add(index, element);
    }

    @Override
    public boolean addAll(Collection<? extends E> c){
        if (new HashSet<E>(c).size() < c.size())
            return false;
        for(E element : c){
            if (this.contains(c))
                return false;
        }
        return super.addAll(c);
    }

    @Override
    public boolean addAll(int index, Collection<? extends E> c) {
        if (new HashSet<E>(c).size() …
Run Code Online (Sandbox Code Playgroud)

java collections list set java-7

12
推荐指数
2
解决办法
1074
查看次数

MiGLayout是否会包含在Java 7中?

到目前为止我所能找到的是这个(开放的)Sun bug/RFE条目,获得426 506票:

http://bugs.sun.com/view_bug.do?bug_id=6530906

它在RFE列表中位居第三.

很多人都表示它将被包含在Java 7中......但是有没有人有关于是否包含MiGLayout的任何明确信息?


回答

嗯,似乎Chad有一个观点 - 它不在任何地方的官方列表上,时间肯定会消失,所以除非发生重大事件,否则可以说MiGLayout显然不会包含在Java 7中,尽管有426票来自社区.太糟糕了.

java miglayout java-7

11
推荐指数
1
解决办法
1576
查看次数

任何人都可以简单地描述3个闭包提案与Java当前状态之间的差异吗?

我正在阅读将在Java 7中出现的闭包.

我有点困惑,因为一方面有很多很好的文章描述了新的java闭包.但另一方面,有3种不同的规格,有些文章只是过时了,因为描述的不是最新的提案.

因此,如果有人从一开始就跟踪java闭包的进度,那么请在很短的时间内描述所有3个提案及其当前状态.

关于闭包的另一件事是,是否只存在一个开发线或正在开发不同的版本(例如,来自Sun,来自Google,来自Apache等的闭包)?

java closures specifications java-7

11
推荐指数
1
解决办法
412
查看次数

为什么菱形运算符不能在Java 7中的addAll()调用中工作?

给出了泛型教程中的这个例子.

List<String> list = new ArrayList<>();
list.add("A");

// The following statement should fail since addAll expects
// Collection<? extends String>

list.addAll(new ArrayList<>());
Run Code Online (Sandbox Code Playgroud)

为什么最后一行不能编译,它似乎应该编译.第一行使用非常相似的构造并编译没有问题.

请详细解释.

java generics diamond-operator java-7

11
推荐指数
2
解决办法
1万
查看次数

JDK7中没有com.sun.tools.javac

我在Windows 7 64位中使用JDK7和Eclipse Indiago.我将环境变量JAVA_HOME设置为F:\ JDK7并在路径中添加%JAVA_HOME%\ bin.这是我的示例代码:

com.sun.tools.javac.Main m1 = new com.sun.tools.javac.Main();
m1.compile(source);
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

键入com.sun.tools无法解析为类型

为什么没有com.sun.tools?有什么问题 ?

在此输入图像描述

java jdk1.6 java-7

11
推荐指数
2
解决办法
2万
查看次数

为什么Java中的多捕获功能要求异常是最终的?

关于添加到Java 7 的多捕获功能的Oracle文档声明该catch子句中的异常参数是隐式的final.

我的问题是:这种限制有什么意义?因为我似乎无法找到它带来的一个重要改进.将引用对象标记为final仅保护引用本身不被修改,而不是它引用的对象,并且永远不会禁止创建另一个引用并以任何他们想要的方式修改它.

关于SO的一个有点相关的问题讨论了为什么修改catch子句中的异常引用不是最明智的事情,但它涉及到该子句的任何使用catch,而不仅仅是它的多捕获形式.那么为什么Java会为多重捕获制造一个例外,并以特殊的方式对待它?

谢谢!

java exception java-7 multi-catch

11
推荐指数
1
解决办法
695
查看次数

Objects.compare()方法的目的是什么?

Java 7引入了Objects包含" null-safe或null-tolerant"方法的类,包括compare(T, T, Comparator<T>).但我什么时候会用

Objects.compare(left, right, comparator);
Run Code Online (Sandbox Code Playgroud)

简单地打电话

comparator.compare(left, right);
Run Code Online (Sandbox Code Playgroud)

?

Objects.compare只有null-safe如果comparator也是如此,为什么我会包装比较调用?首先检查对象标识的优化似乎应该在比较器本身中完成.我能看到的行为中唯一真正的区别在于comparator.compare(left, right)抛出一个NullPointerException如果所有的comparator,left而且right是null,而Objects.compare不是; 这似乎并不是一个重要的考虑因素,可以保证新的标准库方法.

我错过了一些明显的东西吗?

java java-7

11
推荐指数
1
解决办法
532
查看次数