标签: java-7

在JDK7工具中强制使用英语

我刚刚在德国Windows机器上安装了JDK7,我注意到的第一件事就是它与操作系统之后的JDK6和一些消息(例如,来自工具的帮助消息,而不是来自编译器的错误消息)是德语版本.我怎么能强迫它到处使用英语呢?AFAIK安装程序不是特定于语言的,安装过程中的所有消息都是英文的.

java java-7

8
推荐指数
2
解决办法
2926
查看次数

由于缺少GenericArrayType而从Java6升级到Java7时出现ClassCastException

我的代码在Java 5和6中运行,但是当我升级到Java 7时,我得到一个"java.lang.ClassCastException:java.lang.Class不能转换为java.lang.reflect.GenericArrayType".

对于以下代码:

public class A<T> {
  public Vector<Integer[]> arr;
}

System.out.println(((ParameterizedType)A.class.getField("arr").getGenericType()).getActualTypeArguments()[0]);
System.out.println(((ParameterizedType) A.class.getField("arr").getGenericType()).getActualTypeArguments()[0].getClass());
Run Code Online (Sandbox Code Playgroud)

Java6打印:

java.lang.Integer[]
class sun.reflect.generics.reflectiveObjects.GenericArrayTypeImpl
Run Code Online (Sandbox Code Playgroud)

Java7打印:

class [Ljava.lang.Integer;
class java.lang.Class
Run Code Online (Sandbox Code Playgroud)

这种不同的行为破坏了我依赖于泛型的代码.是否有人可以帮助我理解为什么会这样,以及如何获得GenericArrayType从Vector<Integer[]> arr?

java generics java-7

8
推荐指数
1
解决办法
999
查看次数

Ant 1.8.1显示不正确的java版本?

我在Win 7下运行Ant 1.8.1.我的Java版本是1.7_17.

我在构建文件中添加以下2行进行诊断.

<echo message="java.version  = ${ant.java.version}"                   />
<echo message="java.home     = ${java.home}"                          />
Run Code Online (Sandbox Code Playgroud)

结果是

 [echo] java.version  = 1.6
 [echo] java.home     = C:\Program Files\Java\jre7
Run Code Online (Sandbox Code Playgroud)

对于发生了什么有什么想法?

在Ant 1.8.1中硬编码它可以显示的最高java版本是1.6吗?

ant java-7

8
推荐指数
2
解决办法
3907
查看次数

用于多个目录的Java nio WatchService

我想使用Java NIO观察(监视)多个目录 WatchService.我的问题是要监视的目录数是动态的,用户可以添加任意数量的目录WatchService.这可以实现吗?

java nio java-7

8
推荐指数
1
解决办法
6053
查看次数

如何在android中使用java.nio.file包?

我想使用java.nio.file API为Android创建一个文件管理器应用程序,它是JDK7的一部分.我认为这个(java.noi.file)API包含设计文件管理器应用程序的简单解决方案,其中JDK6(IO)和apache commons IO API没有相同的功能.

请给出一些解决方案,我如何在Android应用程序中使用JDK7(IO).

谢谢!

java android nio file-manager java-7

8
推荐指数
1
解决办法
8970
查看次数

使用java.lang.invoke.MethodHandle调用私有方法

如何使用方法句柄调用私有方法?

据我所知,只有两种可公开访问的Lookup实例:

  • MethodHandles.lookup()
  • MethodHandles.publicLookup()

并且都不允许不受限制的私人访问.

有非公众Lookup.IMPL_LOOKUP做我想做的事.是否有一些公共方法来获取它(假设SecurityManager允许它)?

java reflection invokedynamic java-7 methodhandle

8
推荐指数
1
解决办法
2730
查看次数

在一些基本的解析任务中,Java 7比Java 6慢8倍

我最近注意到,自从我更新到Java 7以来,我的代码的特定部分运行速度明显变慢.令人惊讶的是,Java 7的全局速度比Java 6快.

该程序非常庞大,但我成功地提取了一个可重现的代码来演示java 7如何比Java 6慢.

如果您使用Java 6和Java 7运行完全相同的代码,您会发现Java 7比Java 6慢大约7-8倍!

这是代码(不要试图理解它的作用,它只是来自真实代码的摘要,因此并没有真正意义).它基本上是一个解析字符串以格式化其中某些部分的代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
public class CPerfJava7 extends JFrame {
    private static final long serialVersionUID = 1L;

    // +==============================================================+
    // | Attributes                                                   |
    // +==============================================================+
    JPanel mainPanel;

    public CPseudoHtmlDocument docu;
    private static long totalTime = …
Run Code Online (Sandbox Code Playgroud)

java performance swing java-6 java-7

8
推荐指数
1
解决办法
900
查看次数

通用匹配模式('/**')在过滤器链中的其他模式之前定义,导致它们被忽略

Spring Security基本示例给出了此异常.

错误:"通用匹配模式('/**')在过滤器链中的其他模式之前定义,导致它们被忽略.请检查命名空间或FilterChainProxy bean配置中的顺序"

我在同一个问题上查了很多帖子.但找不到任何解决方案.任何人都可以部署一个hello spring security吗?

我使用的是这些版本 - Spring 3.2.0.RELEASE/Spring security 3.2.0.RELEASE/Tomcat 7/Java 1.7.

这是我的代码:

web.xml中

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Spring security sample Web Application</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-context.xml,
            /WEB-INF/security-context.xml</param-value>
    </context-param>

    <!-- Spring security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>spring-dispatcher-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-context.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-dispatcher-servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
Run Code Online (Sandbox Code Playgroud)

弹簧的context.xml

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user …
Run Code Online (Sandbox Code Playgroud)

spring-security java-7 tomcat7

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

为什么这在Java7中编译而在Java8中不编译?

泛型是棘手的.看起来它们在不同版本的Java中被区别对待.

此代码在Java 7中成功编译,无法使用Java 8进行编译.

import java.util.EnumSet;

public class Main {
  public static void main(String[] args) {
    Enum foo = null;
    tryCompile(EnumSet.of(foo));
  }

  static <C extends Enum<C> & Another> void tryCompile(Iterable<C> i) {}

  static interface Another {}
}
Run Code Online (Sandbox Code Playgroud)

这是来自Java 8的错误消息.我用这个来编译它:http://www.compilejava.net/

/tmp/java_A7GNRg/Main.java:6: error: method tryCompile in class Main cannot be applied to given types;
    tryCompile(EnumSet.of(foo));
    ^
  required: Iterable<C>
  found: EnumSet
  reason: inferred type does not conform to upper bound(s)
    inferred: Enum
    upper bound(s): Enum<Enum>,Another
  where C is a type-variable: …
Run Code Online (Sandbox Code Playgroud)

java generics compiler-errors java-7 java-8

8
推荐指数
1
解决办法
2119
查看次数

try-with-resources用InputStreamReader包装流的地方?

我可能会过度思考这个问题,但我只是写了代码:

try (InputStream in = ModelCodeGenerator.class.getClassLoader().getResourceAsStream("/model.java.txt"))
{
    modelTemplate = new SimpleTemplate(CharStreams.toString(new InputStreamReader(in, "ascii")));
}
Run Code Online (Sandbox Code Playgroud)

这意味着InputStreamReader永远不会关闭(但在这种情况下,我们知道它的close方法只是关闭底层的InputStream.)

人们可以把它写成:

try (InputStreamReader reader = new InputStreamReader(...))
Run Code Online (Sandbox Code Playgroud)

但这似乎更糟糕.如果由于某种原因抛出InputStreamReader,则InputStream将永远不会被关闭,对吧?这是C++中的常见问题,其中构造函数调用其他构造函数.异常可能导致内存/资源泄漏.

这里有最好的做法吗?

java java-7

8
推荐指数
2
解决办法
8006
查看次数