标签: java-7

Files.walkFileTree中的遍历顺序

Files.walkFileTree访问同一级别的文件/目录的顺序是什么?

它似乎没有按大小,上次修改时间或名称的顺序访问它们.我在API文档中也找不到任何内容.

也许该preVisitDirectory方法可用于指定访问顺序,但默认行为是什么?

java filesystems java-7 java.nio.file

13
推荐指数
1
解决办法
3492
查看次数

在Java 7上的equals()和deepEquals()

方法描述说:

如果参数彼此非常相等则返回true,否则返回false ... 等于通过使用第一个参数的equals方法确定.

哪个(对我来说)表明,如果使用equals()方法,它们维护引用的每个对象也相等,则对象非常相等.他们所参考的每个物体也是平等的.并..

那么...... equality is determined by using the equals method of the first argument.

这有什么不同.equals()?假设我们恰当地描述了equals,对象等于另一个对象,对象的每个字段也等于它.

能否请您提供说明之间的差别的例子Objects.deepEquals()和Objects.equals()?

equality java-7 deepequals

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

如果jar文件>特定大小,Applet无法在Windows 7上加载Java 1.7

我们有一个相当复杂的签名小程序,自从我们几年前开发它以来一直很好用.在我们关心的所有操作系统/浏览器配置中,它可以在Java 1.5和1.6上运行良好.

它在Windows 7或Vista上的任何浏览器中都不适用于Java 1.7.我们已经看到它适用于Windows XP.此applet在Apache使用mod_proxy连接到Tomcat 6的站点中运行.

这些都是背景信息,因为我将问题简化为一个非常简单的未签名小程序:

package myapplet;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class MyApplet extends Applet {
    private static final long    serialVersionUID    = 1L;

    public void paint(Graphics g) {
        g.drawRect(0, 0, 250, 100);
        g.setColor(Color.blue);
        g.drawString("Look at me, I'm a Java Applet!", 10, 50);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果将这个applet类放入一个jar文件中,另一个文件将jar文件的总(压缩)大小超过大约18KB,那么当由本地运行的Tomcat 6(或Apache 2.2)提供服务时,applet不会加载.

我通过向jar文件添加文本文件并更改文本文件的大小来玩.我通过在文本文件中添加一个字符来实现它从工作到不工作的程度.

查看带有跟踪的控制台日志,它正在尝试下载jar文件.这是我认为悬挂的主题:

"thread applet-com.bright.assetbank.clientsideedit.myapplet.MyApplet-1" prio=4 tid=0x048d8c00 nid=0x19b8 runnable [0x0700d000]
    java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    - …
Run Code Online (Sandbox Code Playgroud)

java applet jar windows-7 java-7

13
推荐指数
1
解决办法
7286
查看次数

带有emma和junit的Java 7导致java.lang.VerifyError和非法局部变量错误

所以我收到了这些错误

[junit]方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17

[junit] java.lang.VerifyError:在方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest中调用分支目标11处的stackmap帧.()V在偏移量4处

[junit] java.lang.ClassFormatError:方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17

我想知道如何解决它......

我读过的内容:

我做了什么:

资源:

对于一些非常疯狂的原因,JUnit通过target="test"但失败了target="emmatest".

这是命令提示符下的输出 java -version

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我试过设置的默认参数为我java7 JRE来-XX:-UseSplitVerifier从这里

参数http://iforce.co.nz/i/dvsh1eoc.n0m.png

我还试图使它投诉JDK 1.6上Project Properties.

投诉http://iforce.co.nz/i/4jxuj4eb.rae.png

JUnit直接测试结果(跟踪没有错误)

junit http://iforce.co.nz/i/wicrvpsi.5gw.png

我没有选择,请帮忙!:(

eclipse ant emma java-7

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

java Object中hashCode的实现是什么?

可能重复:
hashCode()是如何用Java计算的

我发现Java中hashCode(?的根类方法没有实现Object:

public native int hashCode(); 
Run Code Online (Sandbox Code Playgroud)

如果我有一个Object a和一个Object b,我如何知道a.hashCode()和b.hashCode()价值而不使用System.out.println()?只是通过hashCode实施.

我尝试了new两个ArrayList对象,令我惊讶的是,hashCode()值是相同的:它们都是1.

java hashcode java-7

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

为什么java会抱怨有大量条目的jar文件?

我偶然发现了以下问题 - 当我创建.jar超过65k条目的文件时,java会抱怨"无效或损坏jarfile".例:

$ # in fresh dir
$ for i in {1..70000}; do touch $i; done
$ jar cf app.jar {1..70000}
$ java -jar app.jar
Error: Invalid or corrupt jarfile app.jar
Run Code Online (Sandbox Code Playgroud)

但如果我使用少量文件,它的工作原理如下:

$ jar cf app.jar {1..60000}
$ java -jar app.jar
no main manifest attribute, in app.jar
Run Code Online (Sandbox Code Playgroud)

我听说旧.zip文件格式有65k文件限制,但Java 7默认情况下应该使用ZIP64.为什么会这样?有办法解决吗?

java zip scala jar java-7

13
推荐指数
1
解决办法
3434
查看次数

模糊处理导致VerifyError:期望堆栈图框架

我们使用的是最新的JDK 7(u45)和ProGuard版本4.10

在混淆之后,最初开始我们的分发失败,出现以下错误:

Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at
branch target 155
Exception Details:
  Location:
    com/bla/bla/service/ioc/SpringBootstrap.c()V @0: getstatic
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: b200 73b6 008b 9900 82b2 0073 b800 933b
    0000010: 1a99 0074 b200 73b6 008d 9900 6bb2 0074
    0000020: 1221 b600 cfb8 0092 4c2b b600 9c12 1db9
    ...
  Exception Handler Table:
    bci [0, 152] => handler: 155

        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at …
Run Code Online (Sandbox Code Playgroud)

obfuscation verification proguard java-7

13
推荐指数
1
解决办法
7384
查看次数

在CentOS 6上切换java版本

我有一个带有Java 1.7的CentOS 6虚拟机.

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.4.1.el6_5-x86_64 u51-b02)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
$ javac -version
javac 1.7.0_51
Run Code Online (Sandbox Code Playgroud)

我需要使用Java 1.6而不是Java 1.7,所以我安装了它.

$ sudo yum install java-1.6.0-openjdk.x86_64
$ sudo yum install java-1.6.0-openjdk-devel.x86_64
Run Code Online (Sandbox Code Playgroud)

当我再次检查版本时,我会像以前一样.对于其他项目,我将需要Java 1.7,所以我想保留它.

现在我想配置我的虚拟机,以便默认的JDK 和默认的JRE都是1.6.我怎么做?另外,当我完成它后,如何切换回Java 1.7?

centos jdk1.6 java-7 centos6

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

Java7规范中的语法是否真的相同?

JLS v7 第18章中的语法似乎与文档中其他地方的结构不同,但对我来说似乎存在差异.特别是在第15章中,规则是:

RelationalExpression:
  ShiftExpression
  RelationalExpression < ShiftExpression
  RelationalExpression > ShiftExpression
  RelationalExpression <= ShiftExpression
  RelationalExpression >= ShiftExpression
  RelationalExpression instanceof ReferenceType
Run Code Online (Sandbox Code Playgroud)

这使得foo instanceof Bar一个RelationalExpression(因此也就是一个EqualityExpresson)可以在EqualityExpression规则中用作LHS,该规则产生foo instanceof Bar == false一个EqualityExpression.

但是在查看第18章中的语法时,他们对它进行了简化:

Expression2:
  Expression3 [Expression2Rest]

Expression2Rest:
  { InfixOp Expression3 }
  instanceof Type
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,这意味着我们可以将Expression3二进制运算符链接在一起,或者我们可以检查一个类型Expression3.具体现在foo instanceof Bar是一个Expression2,但我没有看到使用Expression2平等比较的LHS 是有效的.

我是否错过了第18章的语法中的某些内容foo instanceof Bar == false?请注意,根据第15章中的规则并根据我的编译器,它是一个有效的表达式.

java grammar language-lawyer java-7

13
推荐指数
1
解决办法
341
查看次数

现在有任何新的方法可以在Java中以微秒的精度获得当前时间吗?

我检查了下面的页面,没有方法可以获得2009年Java中微秒精度的当前时间.
当前时间以微秒为单位的java

最好的是System.currentTimeMillis(),它以毫秒为单位给出当前时间的准确度,而System.nanoTime()给出当前时间戳的准确度,以纳秒为单位,但是这个时间戳不能用于高精度地转换为当前时间.

我可以在6年后知道Java中是否有任何新的更新?谢谢.

编辑1. System.nanoTime()对于估计持续时间非常有用,但不能提供当前时间.

编辑2.在Java 8中使用解决方案是件好事.在Java 7中还有其他方法吗?谢谢!

java time java-7

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