标签: java-7

JRE 6和7与JRE 6并排作为默认值(Win 7)

对于在Windows 7上从Java 6迁移到Java 7运行时的迁移项目,我们希望得到以下情况:

  • JRE 6和JRE 7都安装在机器上
  • JRE 6被设置为默认值
  • JRE 7将由需要它的applet和webstart应用程序明确请求.

我们发现许多使用该路径来实现这种情况的解决方案,但我们正在寻找一种保持默认路径的方法(使用C:\ Windows\System中的java.exe).不幸的是,将注册表项\ HKLM\SOFTWARE\Wow6432\JavaSoft\Java Runtime Environment\CurrentVersion更改为1.6不起作用.

有没有人有这样的设置经验?

编辑: 我有很多问题为什么我们想要这个.我可以讨论所有的细节,但请从我这里了解我们讨论了所有可能的情况,这是影响我们业务的最少的情况.涉及超过10K系统(笔记本电脑+台式机)以及许多不同的Applet,webstart应用程序和独立客户端应用程序.

java windows-7 java-6 java-7

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

java 1.7.0_21 - 不允许重复扩展 - OS/X

KeychainStore Ignored Exception: java.security.cert.CertificateParsingException: java.io.IOException: Duplicate extensions not allowed
Run Code Online (Sandbox Code Playgroud)

我用 Java 7 编写了一个桌面应用程序,可以在 Windows 和 OS/X 上运行。我们的用户都在他们的计算机上安装了一个特殊的证书,进入各自的本地密钥库。德国有一个mac book用户,他的客户端尝试访问KeychainStore时收到上述错误信息。有没有人见过这样的事情?它在我的 macbook 和所有 Windows 客户端上运行良好。只是他的机器有这个问题,我不明白。我通过让他在浏览器中访问 Web 服务来验证他的证书没有问题。

ssl-certificate java-7

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

为什么我不能从maven插件中关闭tomcat 7嵌入式?

我正在使用tomcat7-maven-plugin2.2从命令行运行webapp(我在Windows 8.1,Java 1.7.0_51和Maven 3.2.1).

这是配置(非常简单,我猜):

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>

    <configuration>
        <address>localhost</address>
        <port>8080</port>
        <path>/</path>
        <uriEncoding>UTF-8</uriEncoding>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我运行Maven mvn tomcat7:run并且它正确启动,服务器启动,webapp加载,我可以与它进行交互.
我运行Maven的命令提示符正忙着显示Tomcat输出(这看起来很好):

[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building <project-name-here> 0.3
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) @ <project-name-here> >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ <project-name-here> ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 25 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile …
Run Code Online (Sandbox Code Playgroud)

windows java-7 maven-tomcat-plugin

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

WebLogic 12c - 目标无法访问的异​​常

首先,我安装了jdk 1.6.0_43和oracle weblogic 12.1.1,我成功地部署了我的应用程序.

然后我升级了我的jdk(1.7.0_60)和weblogic(12.1.2),但无法部署我的应用程序.

现在,我降级了我的weblogic(12.1.1)但保留了我的jdk 1.7.0_60,但我仍然无法成功部署我的应用程序.

在两种故障情况下,我都收到了同样的错误消息.有没有关于java 7的东西我应该注意什么?我试着寻找这个,但是徒劳无功..

 [exec] javax.naming.CommunicationException [Root exception is java.net.ConnectException: t3://localhost:9991: Destination unreachable; nested exception is: 
 [exec] java.net.ConnectException: Connection refused: connect; No available router to destination]
Run Code Online (Sandbox Code Playgroud)

java jdk1.6 java-7 weblogic12c

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

从Java 8到Java 7语法的Delambdafy Java代码工具?

有没有人知道将Java 8代码(源代码级)转换为使用匿名内部类的Java 7代码中的lambda和方法引用的任何工具?我知道Retrolambda,但它适用于字节码级别,而不是源级别.

现在,我有一个工作版本作为IntelliJ插件.我扩展了当前的IntelliJ代码,一次转换包中的所有lambda,而不是单独选择每个lambda并转换为匿名内部类.这种方法的问题在于它无法作为一个独立的工具工作,比如一个maven插件,因为它需要一个IntelliJ上下文才能工作.

编辑:请注意,重点是将lamda /方法引用转换为匿名内部类.我并不担心Java 8中的API更改会被Java 7编译器捕获并报告为编译错误.

java lambda inner-classes java-7 java-8

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

如何以编程方式在Java中执行功能检测?

我想编写一个java框架,它支持JRE7作为基线,但JRE8如果在JRE8(向上兼容??)的上下文中运行,则可以利用这些功能.

(或者我可能倒退了......即JRE8是基线,但是优雅降级以支持JRE7).

Java是否提供了这样做的方法?

我的尝试/例子:

我以为我可以用类似于javascript特征检测的方式解决这个问题,我可以通过编程方式测试我的Java8方法的存在,如果它以编程方式调用它,否则回退到Java7库.

IMO这是一个非常艰巨的方法.如果这个"特征切换/检测"可以由Java Runtime Environment/ 处理,那就太棒了Java Compiler.这可能吗,还是我服用疯狂药?

免责声明:我没有解决编译,这将排除此解决方案的有用性(如果我编译Java7,我不能添加-parameters到编译的类).

public class Index {

    void tellme(String yourname) {
        /* ... */
    }

    public static void main(String[] args) throws Exception {
        Method tellme = Index.class.getDeclaredMethod("tellme", String.class);
        Method java8Params = null;
        try {
            java8Params = Method.class.getMethod("getParameters");
        } catch (NoSuchMethodException t) { /* ignore */ } …
Run Code Online (Sandbox Code Playgroud)

java java-7 java-8

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

javax.net.ssl.SSLHandshakeException:使用带有SSL的JMeter(JDK8)时的handshake_failure

我正在编写一个JMeter测试计划来连接到SSL端口(Tomcat Connector).当使用JDK8(1.8.0_51)上的三个JMeter SSL客户端实现(HttpClient4,HttpClient3.1,Java)中的任何一个连接到SSL端口时,我收到SSLHandshakeException(handshake_failure).如果我使用JDK7(1.7.0_75) - 一切都按预期工作.

Client JDK: HotSpot 1.8.0_51
Client OS: Mac OSX 10.10.2
JMeter version: 2.13

Server: Tomcat 7.0.63 (latest)
Server SSL CipherSuite: RC4-SHA
Server SSL Protocol: all
Server Java: OpenJDK 1.7.0_79
Run Code Online (Sandbox Code Playgroud)

以下是我已经尝试过的一些事情:

(1)我尝试更换JCE Unlimited Strength JAR,如同类似问题所示: 连接到https站点时出现SSLHandshakeException

没有更改错误消息或日志文件,JDK8客户端将无法连接到SSL服务器.

(2)我打开了调试,如下所述:https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https.JVM_ARGS设置为启动JMeter -Djavax.net.debug=ssl:handshake:verbose.日志文件(附在下面)没有提示任何原因可能是什么问题.

(3)我尝试指定HTTPS协议,例如-Dhttps.protocols=SSLv3.没运气.SSLv3已禁用或密码不匹配: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

(4)我试过禁用SNI,例如-Djsse.enableSNIExtension=false.也没有运气.

所以,我现在被迫使用JDK7,直到我可以让我的JMeter与JDK8一起运行,我想解决这个问题.

因此,问题在于JDK8如何处理SSL客户端与JDK7的不同.此外,服务器(Tomcat连接器)需要支持适当的密码和协议,但现在这是我无法控制的.

以下是相关日志:

X509KeyManager passed …
Run Code Online (Sandbox Code Playgroud)

ssl https jmeter java-7 java-8

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

从JDK 1.7开始,从catch块抛出异常对象不需要throws子句!!! 为什么会这样?

今天我在Java中遇到了一个奇怪的场景.我在我的方法中有一个try..catch块,它没有任何throws子句,我能够抛出catch块中捕获的异常对象.它是Exception类的对象,因此它不是未经检查的异常.此外,如果出现异常,它不会打印堆栈跟踪,而是异常被吞没.

下面是我的代码示例,

public class ExceptionTest {

    public void test() {
        try
        {
            // Some code which may throw exception.
        }
        catch(Exception ex)
        {
            // Compiler should ask me to have a *throws Exception* in the signature, when I am throwing an exception object.
            throw ex;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,如果我抛出一个新的异常对象而不是捕获的异常对象,编译器会要求我在方法签名中有一个throws子句.

注意:在Java 7或8中运行时,我遇到了这种情况.

我想知道,抛出的物体在哪里?有任何想法的人请...

java exception-handling exception java-7 java-8

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

在迭代器中从ArrayList中删除多个项目

使用迭代器迭代ArrayList时从ArrayList中删除多个项是否安全?

Iterator<String> iterator = nameList.iterator();
 while(iterator.hasNext()){
     String s = iterator.next();
     List<String> list = work(s);
     for (String s1 : list) {
        nameList.remove(s1);   
    }
}
Run Code Online (Sandbox Code Playgroud)

该work()方法返回在while循环的运行时期间应从nameList中删除的名称列表.

java iterator arraylist java-7

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

在Windows上查看新文件的目录

我有一个模块,必须检查特定目录的新文件(Create).该文件将由另一个我无法控制或可见的系统创建.
我使用了Java WatchService API,当创建新文件时,我能够获得事件ENTRY_CREATE.下面是代码.

WatchService watchService = FileSystems.getDefault().newWatchService();
        Path path = Paths.get(dirLocation);
        path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY,
                StandardWatchEventKinds.ENTRY_DELETE);
        WatchKey key;

        while ((key = watchService.take()) != null) {
            for (WatchEvent<?> event : key.pollEvents()) {
                if ("ENTRY_CREATE".equalsIgnoreCase(event.kind().name())) {
                    // File reading here
                }
Run Code Online (Sandbox Code Playgroud)

问题是在尝试读取新文件的某个时候,我正在获取空内容而没有任何异常.搜索Google和SO,我发现如果文件写入不完整,可能会发生这种情况.为了解决这个问题,我尝试了随机访问文件,锁定并创建了FileOutputStream,但没有运气,我得到了空的内容,没有任何例外.最后我尝试了下面的工作.但我担心的是,这必须在单独的线程内部进行检查,以便不阻塞WatchService事件,并且线程数量可以随着文件数量的增长而增长,也可能是更昂贵的操作.

closed = file.renameTo(file);
Run Code Online (Sandbox Code Playgroud)

有没有其他有效的方法来检查文件写入操作是否完成?或者是否有任何API可以处理这个?

java java-7 watchservice java-threads

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