Files.walkFileTree访问同一级别的文件/目录的顺序是什么?
它似乎没有按大小,上次修改时间或名称的顺序访问它们.我在API文档中也找不到任何内容.
也许该preVisitDirectory方法可用于指定访问顺序,但默认行为是什么?
方法描述说:
如果参数彼此非常相等则返回true,否则返回false ... 等于通过使用第一个参数的equals方法确定.
哪个(对我来说)表明,如果使用equals()方法,它们维护引用的每个对象也相等,则对象非常相等.他们所参考的每个物体也是平等的.并..
那么...... equality is determined by using the equals method of the first argument.
这有什么不同.equals()?假设我们恰当地描述了equals,对象等于另一个对象,对象的每个字段也等于它.
能否请您提供说明之间的差别的例子Objects.deepEquals()和Objects.equals()?
我们有一个相当复杂的签名小程序,自从我们几年前开发它以来一直很好用.在我们关心的所有操作系统/浏览器配置中,它可以在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) 所以我收到了这些错误
[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
我没有选择,请帮忙!:(
可能重复:
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.
我偶然发现了以下问题 - 当我创建.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.为什么会这样?有办法解决吗?
我们使用的是最新的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) 我有一个带有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?
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章中的规则并根据我的编译器,它是一个有效的表达式.
我检查了下面的页面,没有方法可以获得2009年Java中微秒精度的当前时间.
当前时间以微秒为单位的java
最好的是System.currentTimeMillis(),它以毫秒为单位给出当前时间的准确度,而System.nanoTime()给出当前时间戳的准确度,以纳秒为单位,但是这个时间戳不能用于高精度地转换为当前时间.
我可以在6年后知道Java中是否有任何新的更新?谢谢.
编辑1. System.nanoTime()对于估计持续时间非常有用,但不能提供当前时间.
编辑2.在Java 8中使用解决方案是件好事.在Java 7中还有其他方法吗?谢谢!