标签: java-10

var无法解析为类型 - java-10

我只是在我的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 maven java-10

8
推荐指数
1
解决办法
3394
查看次数

getResourceAsStream在Java 10中返回null

我有一个使用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.

java java-10

8
推荐指数
2
解决办法
1864
查看次数

无法使Maven测试范围的依赖项与Java 9(也不是10个)模块一起使用

编辑:我分析了给定的答案.特别是我测试了Till Brychcy的假设,这个假设似乎成立了,但开了更多问题.在以下大分隔符之后,我在问题的最后添加了分析:"-----------分析Till Brychcy的答案----------"

它以某种方式编译并在IJ中运行,但mvn clean install无法编译测试

2个模块的说明,以及失败的内容

我有一个带有2个模块的java 9 maven项目:apimodclientmod.模块clientmod依赖于模块apimod(这些模块都是Maven模块和Java 9模块).

此外,我希望模块clientmod不仅可以重用生产代码apimod,还可以重用测试代码.这是一个常见的模式,我多次使用Java 8.使用Java 9(它与Java 10相同)它也可以正常工作,只要我不声明module-info.java(也就是说,只要我不这样做)运行模块系统).

但是一旦我这样做,启用测试依赖性似乎会禁用生产依赖:( api.Basesrc/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)

Maven测试范围的依赖

我希望模块clientmod不仅可以重用生产代码,apimod还可以重用测试代码.使用Maven,你就像那样(clientmod/pom.xml):

<dependency>
    <groupId>fr.cla</groupId>
    <artifactId>apimod</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java maven java-9 java-10

8
推荐指数
1
解决办法
457
查看次数

在检查JFR飞行记录时,Java Mission Control(JMC)6.0不显示热门方法

在正在运行的应用程序上使用Java Flight Recording功能后,可以使用Java的JMC检查生成的JFR文件以显示热方法,以及每种方法花费的CPU时间百分比.这对于分析应用程序和识别瓶颈非常有用.

以下是旧版JMC中以前可能的示例:

较旧的JMC版本

较旧的JMC版本

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

JMC 6.0

似乎有一个基本的方法调用计数,但没有列出百分比CPU时间.似乎没有添加缺失列的选项.

有没有办法显示热方法%CPU时间,或者是否已从JDK10中的JMC 6.0中删除此功能?

profiling jmc java-10 jfr

8
推荐指数
1
解决办法
1189
查看次数

使用JDK10 SDK的IntelliJ无法编译1.8目标的maven项目

考虑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

8
推荐指数
1
解决办法
926
查看次数

'jshell' 未被识别为内部或外部命令

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 java-10 jshell

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

无法使用Java 10.0.1运行Eclipse

我已将Java更新为版本10.0.1,现在我无法再运行Eclipse了.

它显示了这条消息:

必须提供Java运行时环境(JRE)或Java开发工具包(jdk)才能运行eclipse.搜索以下位置后未找到Java虚拟机:

C:\Program Files\Java\ire1.8.0_144\bin

我尝试从高级设置插入新路径但不起作用.

java eclipse java-10

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

Java 10 中的 javax.xml.stream 和 javax.xml.transform.stream

在 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 xml stax maven java-10

7
推荐指数
1
解决办法
1852
查看次数

Java 8到Java 9迁移为mavenised项目的最佳方式

我正在将我的项目从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)

java maven java-platform-module-system java-9 java-10

7
推荐指数
1
解决办法
725
查看次数

Install4j J​​ava最低版本似乎不起作用

我们正在使用Install4j 7.0.6,并将Java最低版本设置为“ 10.0.1”。我们将Java 10.0.1捆绑到媒体文件中。当我们用Java 9 VM替换随附的JVM时,我们的应用程序仍然启动。我们只是误解了Java最低版本的功能还是使用了错误的版本格式,还是在Install4j 7.0.6中损坏了?

java install4j java-10

7
推荐指数
1
解决办法
76
查看次数