我只是在我的mac机器上安装了JDK 10.检查版本: -
localhost:java-10 vinayprajapati$ java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
Run Code Online (Sandbox Code Playgroud)
为了确保使用的编译器也是同一个版本,我运行如下: -
localhost:java-10 vinayprajapati$ javac -version
javac 10
Run Code Online (Sandbox Code Playgroud)
我创建了一个简单的Maven项目,其结构如下:
localhost:java-10 vinayprajapati$ tree
.
??? pom.xml
??? src
? ??? main
? ? ??? java
? ? ??? com
? ? ??? practice
? ? ??? java_10
? ? ??? App.java
? ??? test
? ??? java
? ??? com
? ??? practice …Run Code Online (Sandbox Code Playgroud) 我有一个使用Java 1.8.0 162的应用程序,我正在将它升级到Java 10.我遇到的一个问题是
appProperties.getClass().getResourceAsStream("/application.properties")
Run Code Online (Sandbox Code Playgroud)
在Java 10中开始返回null.任何想法为什么?appProperties定义如下:
appProperties = new Properties();
Run Code Online (Sandbox Code Playgroud)
这种情况发生在静态方法中,如果相关的话.
该文件存在于src/main/resources/application.properties.无论我是从IntelliJ运行还是从Maven生成的jar中运行,都会发生这种情况.
我尝试添加:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
Run Code Online (Sandbox Code Playgroud)
对我而言pom.xml,这没有任何影响.
使用以下方法打印类路径:
System.getProperty("java.class.path")
Run Code Online (Sandbox Code Playgroud)
收益率,作为第一个条目:
C:\Users\pupeno\Documents\Dashman\code\dashman\target\classes
Run Code Online (Sandbox Code Playgroud)
其中包含application.properties.
编辑:我分析了给定的答案.特别是我测试了Till Brychcy的假设,这个假设似乎成立了,但开了更多问题.在以下大分隔符之后,我在问题的最后添加了分析:"-----------分析Till Brychcy的答案----------"
它以某种方式编译并在IJ中运行,但mvn clean install无法编译测试
我有一个带有2个模块的java 9 maven项目:apimod和clientmod.模块clientmod依赖于模块apimod(这些模块都是Maven模块和Java 9模块).
此外,我希望模块clientmod不仅可以重用生产代码apimod,还可以重用测试代码.这是一个常见的模式,我多次使用Java 8.使用Java 9(它与Java 10相同)它也可以正常工作,只要我不声明module-info.java(也就是说,只要我不这样做)运行模块系统).
但是一旦我这样做,启用测试依赖性似乎会禁用生产依赖:( api.Base一src/main类模块apimod)不再可见client.test.DerivedTest(一src/test类模块clientmod).测试不再编译.
这是Maven还是Java 9中的错误?这是最新版本:Java 9.0.4(与Java 10相同),Maven 3.5.3,maven-compiler-plugin 3.7.0
源代码位于:
git clone https://github.com/vandekeiser/wires.git
Run Code Online (Sandbox Code Playgroud)
我对分支中的测试失败问题进行了"二分法":
git checkout MINIMIZE_ISSUE
`mvn clean install`
Run Code Online (Sandbox Code Playgroud)
- > BUILD FAIL(测试中的编译错误clientmod)
我希望模块clientmod不仅可以重用生产代码,apimod还可以重用测试代码.使用Maven,你就像那样(clientmod/pom.xml):
<dependency>
<groupId>fr.cla</groupId>
<artifactId>apimod</artifactId> …Run Code Online (Sandbox Code Playgroud) 在正在运行的应用程序上使用Java Flight Recording功能后,可以使用Java的JMC检查生成的JFR文件以显示热方法,以及每种方法花费的CPU时间百分比.这对于分析应用程序和识别瓶颈非常有用.
以下是旧版JMC中以前可能的示例:


与Java 10捆绑在一起的JMC 6.0中似乎缺少此屏幕.以下是我在Java 10捆绑的JMC 6.0中看到的示例:

似乎有一个基本的方法调用计数,但没有列出百分比CPU时间.似乎没有添加缺失列的选项.
有没有办法显示热方法%CPU时间,或者是否已从JDK10中的JMC 6.0中删除此功能?
考虑maven项目中的以下代码:
import org.w3c.dom.css.CSSStyleDeclaration;
public class Test {
public static void main(String[] args) {
CSSStyleDeclaration styleDeclaration = null;
}
}
Run Code Online (Sandbox Code Playgroud)
哪里pom.xml包含maven-compiler-plugin插件
<?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>me.serce.jdk10mvntest</groupId>
<artifactId>jdk10mvntest</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
可以使用maven编译该项目,没有错误.但是,当它使用带有JDK10 SDK的IntelliJ编译时,会Error:(1, 27) java: package org.w3c.dom.css does not exist出错.如果源更改为<source>10</source>错误消失.我希望问题可能与拼图相关,但我无法使用--add-modules ...因为javac错误option --add-modules not allowed with target 1.8.
是否有任何变通方法允许我使用IntelliJ与JDK10 SDK以及 …
java compilation intellij-idea java-platform-module-system java-10
我jshell在我的机器上使用 '命令,它无法识别。但是 java 命令工作正常。jshelljdk 10中是否有任何环境设置
C:\Users\Kannan
? jshell
'jshell' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Kannan
? java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
Run Code Online (Sandbox Code Playgroud) 我已将Java更新为版本10.0.1,现在我无法再运行Eclipse了.
它显示了这条消息:
必须提供Java运行时环境(JRE)或Java开发工具包(jdk)才能运行eclipse.搜索以下位置后未找到Java虚拟机:
C:\Program Files\Java\ire1.8.0_144\bin
我尝试从高级设置插入新路径但不起作用.
在 Java 8 中,我一直在使用这些包:
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.stream.StreamSource;
Run Code Online (Sandbox Code Playgroud)
现在,在 Java 10 中,它们无法解决。我应该包含哪些 Maven 依赖项?我不想使用模块。
解决方案:
从旧库中排除旧的 Maven 依赖项 stax-api 和 xml-apis。
我正在将我的项目从Java 8迁移到Java 9.我的项目是mavenised.现在,为了迁移到Java 9,我计划创建一个单独的模块目录,其中模块的所有必需依赖项都将用于此目录.
为了通过maven这样做,我知道的唯一方法是使用maven的复制插件来复制模块目录中所有必需的依赖项.因此,在为模块运行maven安装后,依赖的jar将被复制到repository文件夹(默认情况下),并且还会复制到此模块目录文件夹中.
因此,将会有一个jar副本以及pom.xml中的硬编码,用于复制模块目录中的特定依赖项.
这种方法似乎并不干净,是否有任何出路是自动maven可以读取我的module-info.java文件并复制所需的依赖项不在类路径中但在指定的目录中
这是我的pom.xml
<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>
<parent>
<groupId>com.aa.bb</groupId>
<artifactId>cc</artifactId>
<version>0.0.1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>dd</artifactId>
<name>dd</name>
<groupId>com.aa.cc</groupId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>10</release>
<compilerArgs>
<arg>--module-path</arg>
<arg>./moduledir</arg>
</compilerArgs>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
module-info.java
module com.some_module_name {
requires …Run Code Online (Sandbox Code Playgroud) 我们正在使用Install4j 7.0.6,并将Java最低版本设置为“ 10.0.1”。我们将Java 10.0.1捆绑到媒体文件中。当我们用Java 9 VM替换随附的JVM时,我们的应用程序仍然启动。我们只是误解了Java最低版本的功能还是使用了错误的版本格式,还是在Install4j 7.0.6中损坏了?