标签: java-9

Eclipse 3.8(或Juno)能否在Java 9上运行?

我的应用程序基于Eclipse 3.8,我想知道它是否可以在Java上运行.

我没有使用更新的版本,因为它有性能问题.根据我的经验,与任何较新版本的Eclipse相比,Eclipse 3.8要快得多.

有人知道这个吗?

更新:之前的标题可能暗示我希望Eclipse 3.8能够支持Java 9的新功能.但是,我真的只想知道我是否能够通过Java 9 JRE运行应用程序.

java eclipse-rcp eclipse-juno java-9

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

使用java 9和maven的spring启动应用程序的编译失败

我正在尝试构建spring-boot使用java-9并将部署到的应用程序heroku.作为我使用的构建工具maven.

spring boot 1.5使用生成应用程序initializr.我添加了heroku特定文件并添加toolchains.xml.m2存储库中maven-compiler-plugin.

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lapots.breed.platform.cloud</groupId>
    <artifactId>java-cloud-sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>java-cloud-sample</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.9</java.version>
        <maven.compiler.source>1.9</maven.compiler.source>
        <maven.compiler.target>1.9</maven.compiler.target>
        <maven.compiler.release>9</maven.compiler.release>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency> …
Run Code Online (Sandbox Code Playgroud)

java heroku maven spring-boot java-9

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

了解Java 8和Java 9中的顺序流和并行流分裂器

关于分裂者的问题乍一看并不简单.

在流中,.parallel()更改流处理的行为.但是我期望从顺序和并行流创建的分裂器是相同的.例如,在顺序流中,通常.trySplit()从不调用,而在并行流中,为了将拆分分裂器移交给另一个线程.

stream.spliterator()vs 之间的差异stream.parallel().spliterator():

  1. 它们可能具有不同的特征:

    Stream.of(1L, 2L, 3L).limit(2);            // ORDERED
    Stream.of(1L, 2L, 3L).limit(2).parallel(); // SUBSIZED, SIZED, ORDERED
    
    Run Code Online (Sandbox Code Playgroud)

这里讨论了另一个无意义的流分裂器特征策略(并行似乎更好地计算):在java 8和java 9中理解深层分裂器特征

  1. 它们在拆分方面可能有不同的行为.trySplit():

    Stream.of(1L, 2L, 3L);                     // NON NULL
    Stream.of(1L, 2L, 3L).limit(2);            // NULL
    Stream.of(1L, 2L, 3L).limit(2).parallel(); // NON NULL
    
    Run Code Online (Sandbox Code Playgroud)

为什么最后两个有不同的行为?如果我愿意,为什么我不能拆分连续流?(例如,丢弃其中一个分割以进行快速处理可能很有用).

  1. 将分裂器转换为流时的重大影响:

    spliterator = Stream.of(1L, 2L, 3L).limit(2).spliterator();
    stream = StreamSupport.stream(spliterator, true); // No parallel processing!
    
    Run Code Online (Sandbox Code Playgroud)

在这种情况下,从顺序流创建了一个spliterator,它禁用了split(.trySplit()返回null)的能力.稍后,需要转换回流,该流不会受益于并行处理.丢人现眼.

最大的问题:作为一种解决方法,在调用之前始终将流转换为并行的主要影响是什么?.spliterator()

// Supports activation of parallel …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream spliterator java-9

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

Java 9迁移javax.annotation

所以我尝试将我的项目迁移到Java 9,但这个过程似乎并不像我想象的那么容易.我不断得到一些关于隐形包的错误,我可以用我的pom中的以下参数修复:

<compilerArgs>
     <arg>--add-modules</arg>
     <arg>java.se.ee</arg>
</compilerArgs>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到以下错误:

cannot find symbol
[ERROR]   symbol:   class Priority
[ERROR]   location: package javax.annotation
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

java maven java-9 java-module

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

在通过类变量调用时,Java 9中的Class.cast和Class.isInstance方法实际上是内在的吗?

我一直在寻找通过Java的9个新特性的方法和发现,现在的方法Class.cast 是内在的与太一起Class.isInstance.

我做了简单的基准来检查:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000)
@Measurement(iterations = 20, time = 1, batchSize = 1000)
public class Casting {

    public Object msg;
    public Class<String> type;

    @Setup
    public void setup(BenchmarkParams params) {
        type = String.class;
        msg = "123";
    }

    @Benchmark
    public boolean isInstanceMethod() {
        return type.isInstance(msg);
    }

    @Benchmark
    public boolean isInstanceMethodExplicit() {
        return String.class.isInstance(msg);
    }

    @Benchmark
    public boolean isInstanceRegular() {
        return msg instanceof String;
    }

    @Benchmark
    public String …
Run Code Online (Sandbox Code Playgroud)

java performance microbenchmark java-9

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

Eclipse/Java9:如何访问内部javafx包?

我的背景:

  • Eclipse IDE for Java Developers,版本:Oxygen.1a发行版(4.7.1a),Build id:20171005-1200oxygen
  • jdk9.0.1
  • win10

简单的东西:

import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;

import javafx.application.Application;
import javafx.stage.Stage;

public class ImportCom extends Application {

    @Override
    public void start(Stage arg0) throws Exception {
        new LambdaMultiplePropertyChangeListenerHandler();

    }

}
Run Code Online (Sandbox Code Playgroud)

因为而不会编译

The type com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler is not accessible
Run Code Online (Sandbox Code Playgroud)

该怎么办?

看起来相似,但现在内部类;)已经编译,直到beta9支持的补丁530,但没有后 - 所以保持旧的氧气作为黄金宝...

注意:交叉发布到eclipse论坛

编辑:

刚刚在命令行上检查了javac的行为:

C:\Users\kleopatra\ox-1a-64\dummy\src>\java\jdk\190-64\bin\javac first\ImportCom.java
first\ImportCom.java:3: error: package com.sun.javafx.scene.control is not visible
import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;
                           ^
  (package com.sun.javafx.scene.control is declared in module javafx.controls, which does not export it to the unnamed module)
1 …
Run Code Online (Sandbox Code Playgroud)

eclipse javafx java-9

3
推荐指数
2
解决办法
5548
查看次数

如何使用Java 9模块中的资源

我使用gradle和jigsaw插件构建了一个小型(hello world style)java 9项目.

对于junit测试,我尝试访问某个文件作为资源,但classLoader.getResource(filename)无法找到该文件.

通常你把文件作为src/test/resources/foo.txt并将其作为访问它/foo.txt,但是对于Java 9,它看起来像是变化了,资源(类似于类)封装在模块中.

我在哪里准备好将gradle资源文件正确打包?

之后在测试中访问该文件的正确方法是什么?

我忘记阅读的文件是什么?:)


更确切地说,我建立了一个小型测试项目.更改到该目录后使用git clone https://github.com/michas2/java_9_resource_test.git并执行gradle build.(我正在使用gradle 4.6,但这应该不是问题.)

结构如下所示:

.
??? build.gradle
??? src
    ??? main
    ?   ??? java
    ?       ??? module-info.java
    ?       ??? resourceTest
    ?           ??? Main.java
    ??? test
        ??? java
        ?   ??? resourceTest
        ?       ??? MainTest.java
        ??? resources
            ??? resourceTest
                ??? test.txt
Run Code Online (Sandbox Code Playgroud)

我试图访问资源使用this.getClass().getResource("/resourceTest/test.txt"),不幸的是,null作为回报.

java gradle java-9 java-module

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

反转API在迁移到java 9时没有抛出这样的方法异常

我正在从java 8迁移到java 9我正在使用反射从类'java.lang.Throwable'获取方法'getStackTraceElement(int)'而我正在将可访问性设置为"true".

程序适用于java 8但是当我迁移到java 9时,它开始失败并出现错误'java.lang.NoSuchMethodException:java.lang.Throwable.getStackTraceElement(int)."

我有一些在java 8中工作正常的代码,如下面的私有静态方法m;

'public static void main(String args[])
{
    try 
    {
        System.out.println("here1");
        //next line throws error
        m = Throwable.class.getDeclaredMethod("getStackTraceElement",int.class);
        m.setAccessible(true);
        System.out.println("here2");
    } catch (Exception e) {

        //logger.warn(e.getLocalizedMessage(), e);
        System.out.println("==>"+e.getLocalizedMessage);
        System.out.println("==>"+e.getName);
        System.out.println("==>"+e.getStackTraceElement);
        System.out.println("here3");
    }
}'
Run Code Online (Sandbox Code Playgroud)

java reflection java-9

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

如何按字典顺序对二维数组进行排序?

假设我们有一个二维数组如下:

int[][] source = {
  {   3,  5,  6,  1},
  {   3,  3,  5, -6},
  {  -1, -3, -5, -6},
  { 124, 43, 55, -66}
};
Run Code Online (Sandbox Code Playgroud)

我们如何按source 字典顺序对多维数组进行排序?

所以,结果,我希望它是:

[ [ -1, -3, -5,  -6], 
  [  3,  3,  5,  -6], 
  [  3,  5,  6,   1], 
  [124, 43, 55, -66] ]
Run Code Online (Sandbox Code Playgroud)

这个网站上的很多问题似乎只建议按每个数组的第一个元素或第二个,第三个等进行排序,但不考虑整个数组.

java arrays sorting java-9

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

IntelliJ IDEA项目模块与Java 9模块是否有不同的概念?

我从未在IntelliJ IDEA中使用过模块,但是在Java 9中出现了模块(我也从未使用过,但现在想研究一下这是什么)

所以问题是:彼此匹配吗?还是IDEA模块出现在很久之前并出于不同目的?

module intellij-idea java-9

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