我的应用程序基于Eclipse 3.8,我想知道它是否可以在Java上运行.
我没有使用更新的版本,因为它有性能问题.根据我的经验,与任何较新版本的Eclipse相比,Eclipse 3.8要快得多.
有人知道这个吗?
更新:之前的标题可能暗示我希望Eclipse 3.8能够支持Java 9的新功能.但是,我真的只想知道我是否能够通过Java 9 JRE运行应用程序.
我正在尝试构建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) 关于分裂者的问题乍一看并不简单.
在流中,.parallel()更改流处理的行为.但是我期望从顺序和并行流创建的分裂器是相同的.例如,在顺序流中,通常.trySplit()从不调用,而在并行流中,为了将拆分分裂器移交给另一个线程.
stream.spliterator()vs 之间的差异stream.parallel().spliterator():
它们可能具有不同的特征:
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中理解深层分裂器特征
它们在拆分方面可能有不同的行为.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)为什么最后两个有不同的行为?如果我愿意,为什么我不能拆分连续流?(例如,丢弃其中一个分割以进行快速处理可能很有用).
将分裂器转换为流时的重大影响:
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 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的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) 我的背景:
简单的东西:
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) 我使用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 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) 假设我们有一个二维数组如下:
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)
这个网站上的很多问题似乎只建议按每个数组的第一个元素或第二个,第三个等进行排序,但不考虑整个数组.
我从未在IntelliJ IDEA中使用过模块,但是在Java 9中出现了模块(我也从未使用过,但现在想研究一下这是什么)
所以问题是:彼此匹配吗?还是IDEA模块出现在很久之前并出于不同目的?
java-9 ×10
java ×8
java-module ×2
maven ×2
arrays ×1
eclipse ×1
eclipse-juno ×1
eclipse-rcp ×1
gradle ×1
heroku ×1
java-8 ×1
java-stream ×1
javafx ×1
module ×1
performance ×1
reflection ×1
sorting ×1
spliterator ×1
spring-boot ×1