标签: java-7

如果启用防火墙,Java 7将阻止Windows Vista和7上的FTP传输.有任何想法吗?

Java 7阻止Windows Vista和7上的FTP传输.

在FTP中,在传输文件之前,必须发送PORT或PASV命令.一旦发送其中一个命令,Windows防火墙就会关闭发送它的套接字.只有在防火墙打开且java.exe的例外不存在时才会发生这种情况.我怀疑这个问题与使用新的Vista IP堆栈的Java 7有关.

有没有人有任何想法如何解决或解决这个问题?我们正在分发一个Java FTP库,所以我们显然不能自己添加异常.

例外:

java.net.SocketException: Permission denied: recv failed
Run Code Online (Sandbox Code Playgroud)

JRE版本信息:

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
Run Code Online (Sandbox Code Playgroud)

后续行动1(2011年11月14日): Oracle已经分析了这个问题并发现它似乎是Windows防火墙和/或IPv6堆栈中的一个错误.他们设法使用本机C(即非Java)应用程序复制问题,因此这是该错误不在Java中的有力证据.他们告诉了微软,所以球现在在球场上.有关详细信息,请访问http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

后续行动2(2012年7月27日): 甲骨文的一位(非常有帮助的)联系人告诉我,这个问题现在已经在微软升级了.我们希望尽快看到一些结果.

后续行动3(2012年8月15日): 我们在Oracle的联系人告诉我们,微软已接受该错误并正在确定其优先级.

后续行动4(2012年9月21日): 微软已经制作了一个目前正在由甲骨文测试的补丁.在发布日期没有任何消息.

后续行动5(2012年10月11日): 终于成功了!微软已公开发布了一个修补程序.他们暗示该修复程序将在未来包含在一般软件更新中:

"如果您没有受到此问题的严重影响,我们建议您等待包含此修补程序的下一个软件更新."

windows ftp windows-firewall wfp java-7

76
推荐指数
5
解决办法
5万
查看次数

为什么StringBuilder#append(int)在Java 7中比在Java 8中更快?

在研究使用和将整数原语转换为字符串的一些小辩论时"" + n,Integer.toString(int)我编写了这个JMH微基准测试:

@Fork(1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Benchmark)
public class IntStr {
    protected int counter;


    @GenerateMicroBenchmark
    public String integerToString() {
        return Integer.toString(this.counter++);
    }

    @GenerateMicroBenchmark
    public String stringBuilder0() {
        return new StringBuilder().append(this.counter++).toString();
    }

    @GenerateMicroBenchmark
    public String stringBuilder1() {
        return new StringBuilder().append("").append(this.counter++).toString();
    }

    @GenerateMicroBenchmark
    public String stringBuilder2() {
        return new StringBuilder().append("").append(Integer.toString(this.counter++)).toString();
    }

    @GenerateMicroBenchmark
    public String stringFormat() {
        return String.format("%d", this.counter++);
    }

    @Setup(Level.Iteration)
    public void prepareIteration() {
        this.counter = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用默认的JMH选项运行它,我的Linux机器上都存在两个Java VM(最新的Mageia 4 64位,Intel i7-3770 CPU,32GB …

java performance java-7 java-8 jmh

76
推荐指数
2
解决办法
9972
查看次数

Android Studio需要哪个JDK版本(语言级别)?

我是android世界的新角色,拥有.NET背景.我正在尝试安装Android Studio,但我在Android.com上与开发Android应用程序所需的JDK版本不匹配.

SDK网页上,它指出需要JDK 6(在系统要求部分下).吉姆威尔逊也坚持他的Pluralsight课程(这是从去年五月开始的新课程),使用版本7和Android SDK将会产生很多麻烦,并且明确只使用JDK 6.

虽然在Android工作室页面(在安装步骤2下),他们解释了如何设置指示正确JDK位置的环境变量.在这里,他们使用JDK 7的路径

选择Start menu > Computer > System Properties > Advanced System Properties.然后打开Advanced tab > Environment Variables并添加一个JAVA_HOME指向JDK文件夹的新系统变量C:\Program Files\Java\jdk1.7.0_21.

我很确定ADT和Eclipse软件包以及Android Studio软件包都使用相同的SDK,但现在我对我需要安装哪个JDK版本感到困惑.我唯一的目的是在迈出Android开发的第一步时尽可能避免出现问题.

免责声明:我对Pluralsight没有任何意义.我只是跟随课程的普通用户.

java android java-6 java-7 android-studio

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

Java错误:比较方法违反了其一般合同

我看到很多关于这个的问题,并试图解决这个问题,但经过一个小时的谷歌搜索和大量的试验和错误,我仍然无法解决它.我希望你们中的一些人能够解决问题.

这就是我得到的:

java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)
    at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)
    at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:191)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
    at java.util.Arrays.sort(Arrays.java:472)
    at java.util.Collections.sort(Collections.java:155)
    ...
Run Code Online (Sandbox Code Playgroud)

这是我的比较器:

@Override
public int compareTo(Object o) {
    if(this == o){
        return 0;
    }

    CollectionItem item = (CollectionItem) o;

    Card card1 = CardCache.getInstance().getCard(cardId);
    Card card2 = CardCache.getInstance().getCard(item.getCardId());

    if (card1.getSet() < card2.getSet()) {
        return -1;
    } else {
        if (card1.getSet() == card2.getSet()) {
            if (card1.getRarity() < card2.getRarity()) {
                return 1;
            } else {
                if (card1.getId() == card2.getId()) { …
Run Code Online (Sandbox Code Playgroud)

java migration compare comparator java-7

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

如何在Snow Leopard上安装java jdk 7

我的Mac目前正在运行Snow Leopard(10.6.8),我想用Java 7开发.我从Oracle的网站上下载了Java 7 OS X安装程序,开始运行它.不幸的是,我立即收到一条消息,称只有OS X Lion(10.7.3)才支持安装程序.有什么方法可以在我的机器上使用Snow Leopard获得Java 7吗?我不是为了升级我的Java而购买新的操作系统.我搜索了一些,但我找不到多少.我希望我能在这里找到一些帮助.谢谢.

java osx-snow-leopard java-7

68
推荐指数
4
解决办法
8万
查看次数

如何检查Java 7路径的扩展名

我想检查Path(在Java 7中引入)是否以某个扩展名结尾.我试过这样的endsWith()方法:

Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用,因为path.endsWith(".java")返回false.endsWith()如果在最终目录分隔符(例如bar.java)之后的所有内容完全匹配,则该方法似乎仅返回true ,这对我来说不实用.

那么我该如何检查Path的文件扩展名呢?

java path java-7

66
推荐指数
3
解决办法
5万
查看次数

Java7"Solr/Lucene"错误有多严重?

显然Java7有一些关于循环优化的讨厌错误:谷歌搜索.

从报告和错误描述中我发现很难判断这个bug有多重要(除非你使用Solr或Lucene).

我想知道的是什么:

  • 我(任何)程序受影响的可能性有多大?
  • 这个bug是否足够确定,正常的测试会捕获它?

注意:我无法让用户使用我的程序-XX:-UseLoopPredicate来避免这个问题.

java java-7

65
推荐指数
2
解决办法
8594
查看次数

如何在Java 7 java.nio.file.Path中访问子文件/文件夹?

Java 7引入了java.nio.file.Path作为java.io.File 的可能替代品.

使用File,当我访问特定的文件时,我会这样做:

File parent = new File("c:\\tmp");
File child = new File(parent, "child"); // this accesses c:\tmp\child
Run Code Online (Sandbox Code Playgroud)

使用Path的方法是什么?

我认为这会起作用:

Path parent = Paths.get("c:\\tmp");
Path child = Paths.get(parent.toString(), "child");
Run Code Online (Sandbox Code Playgroud)

但是打电话parent.toString()似乎很难看.有没有更好的办法?

java nio path java-7

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

是否支持在HotSpot JVM中删除压缩字符串?

在此页面甲骨文的Java HotSpot虚拟机的选项,它会列出-XX:+UseCompressedStrings作为默认选项和.但是在Java 6更新29中,默认情况下它处于关闭状态,并且在Java 7 update 2中它会报告警告

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option UseCompressedStrings; support was removed in 7.0
Run Code Online (Sandbox Code Playgroud)

有谁知道删除此选项背后的想法?


在java中对巨大的file.txt进行排序

有了-mx2g这个例子,选项打开了4.541秒,在Java 6更新29中关闭了5.206秒.很难看出它会影响性能.

注意:Java 7更新2需要2.0 G,而没有压缩字符串的Java 6更新29需要1.8 GB,压缩字符串只需要1.0 GB.

java performance jvm java-7

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

Android是否支持JDK 6或7

我是Android开发的新手.我可以使用在Android中使用JDK 7开发的现有Java代码吗?

这些函数使用xerces dom和xslt以及xpathapi.目前,当我安装Android Eclipse ADT环境时,这些功能都没有编译.我还想知道Android设备本身是否支持JRE 6或7?

android jdk6 java-7

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