标签: java-7

如何在Eclipse Indigo 3.7.1中使用Java 7

据我所知,Eclipse Indigo 3.7.1现在应该支持Java 7.

我下载了Eclipse 3.7.1.和JDK 1.7.0并在Eclipse的设置中添加了JRE7.然后我使用JRE7创建了一个新项目并编写了一个简短的Java 7程序:

public class Test7 {

    public static void main(String[] args) {
        String k = "Hello";
        switch(k) {
        case "World": System.out.println("World Hello");
            break;
        case "Hello": System.out.println("Hello World");
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

启动Java 7项目

但是当我尝试在Switch语句中使用String时出现错误.内容辅助中的错误如下所示:

内容辅助错误

我做错了什么或Eclipse 3.7.1是否支持Java 7?我需要更改Eclipse中的任何设置吗?

java eclipse java-7 eclipse-indigo

5
推荐指数
1
解决办法
9843
查看次数

调用map方法后,Java 7文件通道未正确关闭

我正在研究一个sc2replay解析工具.我在MPQLIB http://code.google.com/p/mpqlib/之上构建它

不幸的是,该工具使用文件通道来读取bzip文件并使用 map(MapMode.READ_ONLY, hashtablePosition, hashTableSize);

调用该函数后关闭文件通道不会在该过程中释放该文件.具体来说,我无法重命名/移动文件.

问题出现在Java 7中,它在Java 6上运行良好.

这是一个复制它的简单代码片段:

    FileInputStream f = new FileInputStream("test.SC2Replay");
    FileChannel fc = f.getChannel();

    fc.map(MapMode.READ_ONLY, 0,1);

    fc.close();

    new File("test.SC2Replay").renameTo(new File("test1.SC2Replay"));
Run Code Online (Sandbox Code Playgroud)

注释掉fc.map将允许您重命名该文件.

PS从这里我应该关闭FileChannel吗?

它声明您不需要关闭文件通道和文件流,因为关闭一个将关闭另一个.我也试过关闭其中一个或两个,但仍然没有奏效.

在Java 7上使用FileChannel.map读取数据后是否有重命名文件的解决方法,因为现在每个人似乎都有Java 7?

java memory-management filechannel java-7

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

注册目录位于网络驱动器上时,Java 7 WatchService不会生成事件

我知道这是在一年前在其他地方被问到的,但我正在寻找任何更新.

我在Java 7中有一个程序,它使用WatchService来监视目录,以便在那里创建新文件.如果我在本地机器上注册一个目录(例如c:\ NewFiles),那么一切都很好.然而,当我试图让它听一个网络驱动器上的文件夹时,它编译并运行但直接退出,因为它似乎没有得到任何事件的通知..这里只是我的代码的一个片段...

 private final WatchService watcher;
 private final Map<WatchKey, Path> keys;
        this.watcher = FileSystems.getDefault().newWatchService();
        this.keys = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我注册了目录......

String srcDirPath = "G:\\NewFiles";
Path dir = Paths.get(srcDirPath);
    WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
    keys.put(key, dir);
Run Code Online (Sandbox Code Playgroud)

然后在循环结束时检查事件......

        if (keys.isEmpty()) {
                System.out.println("Drive is inaccessible");
                break;
            }
Run Code Online (Sandbox Code Playgroud)

在这里,我总是得到"驱动器无法访问"的警告.我尝试将我的Java文件复制到此网络目录并从那里运行它们但我遇到了同样的问题.

是否可以从本地计算机上运行这样的Watchservice来监听对网络驱动器上目录的更改?我在这里得到了许可或防火墙问题吗?我使用的是Windows 7,很可能网络驱动器也在Windows 7机器上.

network-drive java-7 watchservice

5
推荐指数
0
解决办法
912
查看次数

ubuntu上的openjdk-1.7.0_55:无法为输出方法'xml'加载属性文件'output_xml.properties'

在ubuntu上的openjdk-1.7.0_55上我得到了异常:

com.sun.org.apache.xml.internal.serializer.utils.WrappedRuntimeException:无法为输出方法'xml'加载属性文件'output_xml.properties'

这可能是类路径问题吗?

我可以在/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre/lib/resources.jar中找到"output_xml.properties".

任何帮助表示赞赏.

谢谢!

java openjdk classpath java-7

5
推荐指数
1
解决办法
3216
查看次数

由于java 7,UnsupportedClassVersionError?

好的,我刚刚完成了大学的任务,并希望在他们的服务器上测试我的解决方案并获得此异常:

  [java] Exception in thread "main" java.lang.UnsupportedClassVersionError: controller/CloudController : Unsupported major.minor version 52.0
     [java]     at java.lang.ClassLoader.defineClass1(Native Method)
     [java]     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
     [java]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
     [java]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
     [java]     at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
     [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
     [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
     [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
     [java]     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
     [java] Java Result: 1
Run Code Online (Sandbox Code Playgroud)

I checked the server and found out they are using Java 7 while I used Java 8 already.

What I then tried …

java intellij-idea java-7 java-8

5
推荐指数
1
解决办法
3668
查看次数

文件检查权限

我正在尝试使用以下代码片段检查给定文件的权限.

public static void main(String[] args) {
    try{
        FilePermission fp = new FilePermission("E:/test.txt", "read");
        AccessController.checkPermission(fp);
        System.out.println("Ok to open socket");
    } catch (AccessControlException ace) {
        System.out.println(ace);
    }
Run Code Online (Sandbox Code Playgroud)

所以当我运行它时,它会给我以下异常:

java.security.AccessControlException: access denied ("java.io.FilePermission" "E:/test.txt" "read")

所有权限都在文件中启用,但它会抛出访问被拒绝的异常.

java java-7

5
推荐指数
1
解决办法
221
查看次数

不支持的major.minor版本52.0 - Maven Error JAVA

我在做

mvn安装

我得到错误:

[错误]无法在项目componentX-share上执行目标org.alfresco.maven.plugin:alfresco-maven-plugin:2.1.0:set-version(default-set-version):目标组织的执行default-set-version .alfresco.maven.plugin:alfresco-maven-plugin:2.1.0:set-version failed:无法在插件'org.alfresco.maven.plugin:alfresco-maven-plugin中加载mojo'set-version': 2.1.0'由于API不兼容:org.codehaus.plexus.component.repository.exception.ComponentLookupException:org/alfresco/maven/plugin/VersionMojo:不支持的major.minor版本52.0

但是我已经看过java的版本是否相同,而且它是正确的.

喜欢:

哪个javac - > /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/javac

哪个java - > /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java

javac - > -version javac 1.7.0_79

java - > -version java version"1.7.0_79"OpenJDK Runtime Environment(IcedTea 2.5.6)(7u79-2.5.6-0ubuntu1.14.04.1)OpenJDK 64位服务器VM(内置24.79-b02,混合模式)

和

mvn -v - > Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T12:57:37 + 01:00)Maven home:/home/patricia/​​Transferências/apache-maven-3.3.3Java版本:1.7.0_79 ,供应商:Oracle Corporation Java home:/ usr/lib/jvm/java-7-openjdk-amd64/jre默认语言环境:pt_PT,平台编码:UTF-8操作系统名称:"linux",版本:"3.19.0-25 -generic",arch:"amd64",family:"unix"

我认为一切都是正确的.还有我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.acme</groupId>
    <artifactId>componentX-share</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>componentX-share AMP project</name>
    <packaging>amp</packaging>
    <description>Manages the lifecycle of the componentX-share AMP (Alfresco Module Package)</description>

    <parent>
        <groupId>org.alfresco.maven</groupId> …
Run Code Online (Sandbox Code Playgroud)

java alfresco pom.xml maven java-7

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

黄瓜1.2.4找不到步骤定义:“您可以使用下面的代码片段实现缺少的步骤”(2016)

我试图在类似UNIX的系统上用Maven运行Cucumber(不幸的是,我不得不使用Windows,尽管cmd.exe具有相同的结果)命令行:

mvn clean test -Dcucumber.options="src/test/resources/com/example/sqa/automation_cuke/pages/sample_test.feature"

结果是:

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
...
[INFO] --- exec-maven-plugin:1.2.1:java (default) @ sqa.automation_cuke ---
Feature: My animals Sample
  Sample test to use as basis for conversion

  Scenario: My animals           # sample_test.feature:4
    Given that I have my animals

1 Scenarios (1 undefined)
1 Steps (1 undefined)
0m0.000s


You can implement missing steps with the snippets below:

@Given("^that I have my animals$")
public void that_I_have_my_animals() throws Throwable {
    // Write code …
Run Code Online (Sandbox Code Playgroud)

cucumber java-7 cucumber-java

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

Android Studio-无法下载Google API英特尔X86 Atom系统映像

我已经安装了Android Studio-2.2版和jdk 1.7.0_72版。在安装过程中发生错误“警告:准备sdk软件包google apis intel x86 atom系统映像时发生错误”。我已将图像发布在此处,after_installation_problem。虽然有错误显示我跳过了该操作,然后单击完成。但是当我运行Android Studio时,它显示“您的Android SDK丢失,过时或丢失模板”。图像在这里... after_installation_problem。我被困住了..请帮帮我。

android java-7 jdk1.7 android-studio-2.2

5
推荐指数
1
解决办法
1957
查看次数

解析时间戳时,时区重要吗?

我有一个时间戳编码为String-例如,"2012-02-12T09:08:13.123456-0400"来自Oracle数据库。

我可以想到的唯一读取此时间戳的方法是使用Timestamp.valueOf(),并且需要一种格式yyyy-[m]m-[d]d hh:mm:ss[.f...]

我坚信这是在不损失精度的情况下读取时间的唯一方法,因为其他方法不支持上述示例中包含的纳秒精度".123456"。

考虑到这一点,我可以简单地修剪所需的值以适合所需的格式。因此,原始字符串将被转换:

  • 之前: "2012-02-12T09:08:13.123456-0400"
  • 后: "2012-02-12 09:08:13.123456"

如果这样做,我将删除"-0400"时区偏移量。这对我来说是一个危险的信号,直到我看到这篇文章为止。提出的答案之一指出,

我认为正确答案应该是java.sql.Timestamp不是特定于时区的。时间戳是java.util.Date和单独的纳秒值的组合。此类中没有时区信息。因此,就像Date一样,该类仅保留自1970年1月1日00:00:00 GMT + nanos起的毫秒数。

为了向我证明不需要偏移量,我编写了一个简单的集成测试。

将此时间戳插入数据库:中"2015-09-08 11:11:12.123457"。使用Java读取数据库,并打印出详细信息。我得到"2015-09-08 11:11:12.123457",这是相同的值。因为我的JVM和Oracle DB在同一台计算机上运行,​​所以这没问题。

  1. 时区不是因素java.sql.Timestamp吗?
  2. 有没有更好的方法来读取整个时间戳,而又不损失Java 7的任何精度?

java java-7

5
推荐指数
1
解决办法
1583
查看次数