据我所知,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)

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

我做错了什么或Eclipse 3.7.1是否支持Java 7?我需要更改Eclipse中的任何设置吗?
我正在研究一个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 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机器上.
在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] 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 …
我正在尝试使用以下代码片段检查给定文件的权限.
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")
所有权限都在文件中启用,但它会抛出访问被拒绝的异常.
我在做
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) 我试图在类似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) 我已经安装了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。我被困住了..请帮帮我。
我有一个时间戳编码为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在同一台计算机上运行,所以这没问题。
java.sql.Timestamp吗?