标签: java-7

如何将特定的Java版本设置为Maven

在我的机器我安装了两个版本的Java:(1.6和1.7手动我安装).我需要他们两个不同的项目.但Maven的,我需要1.7,现在我的Maven使用1.6 Java版本,我怎么能设置的Maven使用1.7?

maven java-6 java-7

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

我应该如何在JDBC中使用try-with-resources?

我有一种方法可以使用JDBC从数据库中获取用户:

public List<User> getUser(int userId) {
    String sql = "SELECT id, name FROM users WHERE id = ?";
    List<User> users = new ArrayList<User>();
    try {
        Connection con = DriverManager.getConnection(myConnectionURL);
        PreparedStatement ps = con.prepareStatement(sql); 
        ps.setInt(1, userId);
        ResultSet rs = ps.executeQuery();
        while(rs.next()) {
            users.add(new User(rs.getInt("id"), rs.getString("name")));
        }
        rs.close();
        ps.close();
        con.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return users;
}
Run Code Online (Sandbox Code Playgroud)

我应该如何使用Java 7 try-with-resources来改进此代码?

我已尝试使用下面的代码,但它使用了许多try块,并且不会提高可读性.我应该try-with-resources以其他方式使用吗?

public List<User> getUser(int userId) {
    String sql = "SELECT id, name …
Run Code Online (Sandbox Code Playgroud)

java jdbc java-7 try-with-resources

135
推荐指数
4
解决办法
10万
查看次数

用于类路径资源的java.nio.file.Path

是否有一个API来获取类路径资源(例如我得到的Class.getResource(String))作为一个java.nio.file.Path?理想情况下,我想使用奇特的新Path API和类路径资源.

java java-7 nio2

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

Java:int数组使用非零元素初始化

根据JLS,int在初始化之后,应该用零填充数组.但是,我遇到的情况并非如此.这种行为首先发生在JDK 7u4中,也发生在所有后续更新中(我使用64位实现).以下代码抛出异常:

public static void main(String[] args) {
        int[] a;
        int n = 0;
        for (int i = 0; i < 100000000; ++i) {
            a = new int[10];
            for (int f : a)
                if (f != 0)
                  throw new RuntimeException("Array just after allocation: "+ Arrays.toString(a));
            Arrays.fill(a, 0);
            for (int j = 0; j < a.length; ++j)
                a[j] = (n - j)*i;
            for (int f : a)
                n += f;
        }
        System.out.println(n);
    }
Run Code Online (Sandbox Code Playgroud)

在JVM执行代码块的编译之后发生异常,并且不会出现-Xint标志.此外,该Arrays.fill(...)语句(与此代码中的所有其他语句一样)是必要的,如果不存在则不会发生异常.很明显,这个可能的错误与一些JVM优化有关.出于这种行为的原因有什么想法吗?

更新: …

java arrays jvm initialization java-7

130
推荐指数
1
解决办法
6937
查看次数

为什么 2020 年 3 月 30 日和 2020 年 3 月 1 日之间的差值错误地给出了 28 天而不是 29 天?

TimeUnit.DAYS.convert(
   Math.abs(
      new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("30-03-2020 00:00:00").getTime() - 
      new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("1-03-2020 00:00:00").getTime()
   ),
   TimeUnit.MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)

结果是 28,而它应该是 29。

时区/位置可能是问题吗?

java datediff date java-7

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

如何设置IntelliJ IDEA Project SDK

我刚刚安装了IntelliJ IDEA,当我尝试创建我的第一个Project时,它要求我设置Project SDK.当我点击"JDK"时,它要求我选择JDK的主目录,如此图所示.

在此输入图像描述

我无法找到它的位置.

java sdk intellij-idea java-7 java-8

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

目标版本无效:1.7

我见过类似的问题,但还没有找到答案.

使用maven编译,我得到:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

这是pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Javac版本:

javac 1.7.0_25
Run Code Online (Sandbox Code Playgroud)

Java版本:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

知道它可能是什么?

java maven java-7

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

安装Java JDK 7之后对于Mac OS X - mvn -version仍然显示java版本1.6.0_31

Oracle于4月26日为Mac OS X发布了Java JDK 7.我按照安装说明进行操作,当我在终端窗口中执行java -version时,我得到:

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

但是,当我mvn -version在终端窗口中进行时,我得到:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)

如何让Maven使用Java JDK 1.7.0_04?

谢谢您的帮助.

java macos maven java-7

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

从技术上讲,Oracle JDK和OpenJDK之间的主要区别是什么?

我一直在使用OpenJDK,最初用于没有问题的小项目.但是自从我开始玩大玩具之后,我开始注意到随机/未知的致命错误和崩溃(使用H.264编解码器等),直到那时才出现系统崩溃和致命错误的噩梦由OpenJDK引起.

在对OpenJDK感到非常沮丧和厌倦之后,我终于决定切换到Oracle JDK 7.从那以后,我的致命错误/崩溃消失了.我仍然在追踪它是否发生,但我从未遇到过那些系统崩溃.

现在我想知道,如果OpenJDK只是一个许可证问题,为什么稳定性不可能呢?

为什么OpenJDK在他们的稳定版本中保留了bug,但是声称它是Oracle JDK的克隆(实际上并不是这样),那么OpenJDK和Oracle JDK在技术上是分开的?(只有快速功能可用性?还是专注于稳定性/可靠性?)

java linux java-7

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

Java 6与Java 7之间自动拆箱的差异

我注意到Java SE 6和Java SE 7之间的自动拆箱行为有所不同.我想知道为什么会这样,因为我找不到这两个版本之间这种行为的变化的任何文档.

这是一个简单的例子:

Object[] objs = new Object[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

这与Java SE 7中的javac编译良好.但是,如果我给编译器"-source 1.6"参数,我在最后一行得到一个错误:

inconvertible types
found   : java.lang.Object
required: int
Run Code Online (Sandbox Code Playgroud)

我尝试下载Java SE 6以使用本机版本6编译器进行编译(不带任何-source选项).它同意并给出与上面相同的错误.

什么给出了什么?从一些更多的实验看来,Java 6中的拆箱似乎只能清楚地(在编译时)是盒装类型的unbox值.例如,这适用于两个版本:

Integer[] objs = new Integer[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

因此,似乎在Java 6和7之间,取消装箱功能得到了增强,因此它可以一次性抛出和取消对象类型,而不知道(在编译时)该值是正确的盒装类型.但是,通过阅读Java语言规范或Java 7发布时写的博客文章,我看不出有什么变化,所以我想知道改变是什么以及这个"功能"被称为什么?

好奇心:由于变化,可能会触发"错误"的拆箱:

Object[] objs = new Float[2];
objs[0] = new Float(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

这编译得很好但在运行时给出了ClassCastException.

对此有何提及?

java unboxing casting java-7

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