标签: java-7

旧项目与Java 7兼容

我的旧项目使用Java 6(1.6),我不知道何时更新(Java 7),它们可以正常运行?

java backwards-compatibility java-6 java-7

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

IntelliJ,Maven和Java 7

所以我在IntelliJ 10.5中打开了一个现有项目作为maven项目.我首先将JDK 7添加到我的SDK列表中以试用这些功能.但是由于某种原因,我的mvn命令会失败,所以我将maven runner切换回1.6.但我得到一个奇怪的错误,其中一些maven命令仍在使用Java 7运行.

在Maven Projects视图中,当我右键单击模块中的生命周期并选择Run Maven Build时,一切正常,但是当我选择Run"clean"时,它仍然使用1.7 JDK.我已从列表中删除了JDK 7,现在我收到一条错误消息,说它无法找到JRE'1.7'.

老实说,我不知道如何解决这个问题,但如果有人有任何建议会很好.

java maven-2 intellij-idea java-7

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

使用Java 7进行转义分析/堆栈分配的资格

我正在使用Java 7中的转义分析进行一些测试,以便更好地了解哪些对象有资格进行堆栈分配.

这是我编写的用于测试堆栈分配的代码:

import java.util.ArrayList;
import java.util.Iterator;


public class EscapeAnalysis {

    private static final long TIME_TO_TEST = 10L * 1000L; // 10s

    static class Timestamp {
        private long millis;
        public Timestamp(long millis) {
            this.millis = millis;
        }
        public long getTime() {
            return millis;
        }
        public void setTime(long time) {
            millis = time;
        }
    }

    public static void main(String[] args) {
        long r = 0;
        System.out.println("test1");
        r += test1();
        System.out.println("test2");
        r += test2();
        System.out.println("test3");
        r += test3();
        System.out.println("test4");
        r …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm escape-analysis java-7

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

Tomcat 7现在是否与Java 7兼容?

如果没有,何时可以预见到?

如果是,您是否知道将现有的Tomcat 7/Java 6安装迁移到Tomcat 7/Java 7是否有特殊之处?

谢谢!

java-7 tomcat7

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

Java OutOfMemory异常:加载zip文件时出现mmap错误

我使用JVM参数在生产环境(rhel 5.2 x64,oracle jre 1.7_05,tomcat 7.0.28)上运行我的应用程序:

-Xms8192m -Xmx8192m -XX:MaxPermSize=1024m 
-Doracle.net.tns_admin=/var/ora_net -XX:ReservedCodeCacheSize=512m -XX:+AggressiveOpts -XX:+UseFastAccessorMethods 
-XX:+UseStringCache -XX:+OptimizeStringConcat -XX:+UseCompressedOops -XX:+UseG1GC -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9026 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)

经过几次,我有像这样的堆栈跟踪:

Java HotSpot(TM) 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.
Java HotSpot(TM) 64-Bit Server VM warning: Attempt to allocate stack guard pages failed.
mmap failed for CEN and END part of zip file
[...]
Caused by: java.lang.OutOfMemoryError: null
    at java.util.zip.ZipFile.$$YJP$$open(Native Method) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.open(Unknown Source) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
    at …
Run Code Online (Sandbox Code Playgroud)

java mmap out-of-memory java-7

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

Java泛型SuppressWarnings("未选中")之谜

为什么代码替代(1)编译时没有警告,代码替代(2)产生"未经检查的强制转换"警告?

两者共同:

class Foo<T> {
    Foo( T [] arg ) {
    }
}
Run Code Online (Sandbox Code Playgroud)

替代方案(1):

class Bar<T> extends Foo<T> {
    protected static final Object [] EMPTY_ARRAY = {};

    @SuppressWarnings("unchecked")
    Bar() {
         super( (T []) EMPTY_ARRAY );
    }
}
Run Code Online (Sandbox Code Playgroud)

替代方案(2):

class Bar<T> extends Foo<T> {
    @SuppressWarnings("unchecked")
    Bar() {
         super( (T []) EMPTY_ARRAY );
    }

    protected static final Object [] EMPTY_ARRAY = {};
}
Run Code Online (Sandbox Code Playgroud)

备选方案(2)产生:

javac -Xlint:unchecked Foo.java Bar.java 
Bar.java:4: warning: [unchecked] unchecked cast
             super( (T []) EMPTY_ARRAY );
                           ^
  required: T[]
  found: …
Run Code Online (Sandbox Code Playgroud)

java generics unchecked suppress-warnings java-7

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

在Amazon Linux中切换到JDK 7

我有t1.micro 64位实例,我按照一些指令(sudo yum install java-1.7.0-openjdk-devel)(sudo yum update等)安装了JDK 7 .所以,当我搜索它时,

sudo yum search openjdk
Run Code Online (Sandbox Code Playgroud)

我得到以下 -

java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
Run Code Online (Sandbox Code Playgroud)

所以,两者都安装好了.但是当我尝试使用时切换到JDK 7

sudo update-alternatives --config java 
Run Code Online (Sandbox Code Playgroud)

我得到 -

There is 1 program that …
Run Code Online (Sandbox Code Playgroud)

java linux amazon-ec2 java-7

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

com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件:目标进程未响应或未加载HotSpot VM

我AttachNotSupportedException 在linux(ubuntu 64bit)上运行jmockit测试时得到的.Java版本是1.7.0_51.这个JDK来自Oracle.使用ant运行测试(可能不相关)

查看堆栈跟踪.

[junit] 
[junit] java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89)
[junit]     at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
[junit]     at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
[junit]     at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:136)
[junit]     at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169)
[junit]     at junit.framework.TestResult.<clinit>(TestResult.java:15)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016)
[junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79)
[junit]     ... 8 more
[junit] Exception …
Run Code Online (Sandbox Code Playgroud)

linux jmockit java-7

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

为什么我不能在这里使用.invokeExact(),即使MethodType没问题呢?

对于我的一个项目,我必须对构造函数进行动态调用.但由于这是Java 7,而不是"经典"反射API,我使用java.lang.invoke.

码:

@ParametersAreNonnullByDefault
public class PathMatcherProvider
{
    private static final MethodHandles.Lookup LOOKUP
        = MethodHandles.publicLookup();
    private static final MethodType CONSTRUCTOR_TYPE
        = MethodType.methodType(void.class, String.class);

    private final Map<String, Class<? extends PathMatcher>> classMap
        = new HashMap<>();
    private final Map<Class<? extends PathMatcher>, MethodHandle> handleMap
        = new HashMap<>();

    public PathMatcherProvider()
    {
        registerPathMatcher("glob", GlobPathMatcher.class);
        registerPathMatcher("regex", RegexPathMatcher.class);
    }

    public final PathMatcher getPathMatcher(final String name, final String arg)
    {
        Objects.requireNonNull(name);
        Objects.requireNonNull(arg);

        final Class<? extends PathMatcher> c = classMap.get(name);
        if (c == null)
            throw new UnsupportedOperationException();

        try {
            return …
Run Code Online (Sandbox Code Playgroud)

java java-7 methodhandle

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

Java 8性能VS. Java 7

我正在通过JNI使用C++库开发一个成像处理Java 7u80应用程序.

由于我愿意与Java 8u60 并行执行流,我刚刚切换到JDK 8并重新启动了我的所有单元测试.

Java 8u60 Overall duration: **35'408 [ms]**
Java 7u80 Overall duration: **29'581 [ms]**

在我看来,Java 7比Java 8快17%(相同的代码,代码级别分别为7和8).

  1. 我想知道这样的结果是否特定于我的应用程序,或者其他人是否已经注意到将Java 7的性能降级为8?
  2. 是否在代码中进行了特殊的优化以获得最佳的Java 8?

如果不能做任何事情,我宁愿用Java 7而不是8来实现多线程代码,以保持我已经拥有的Java 7性能.

java multithreading java-7 java-8

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