在create-next-appNext.js 应用程序中,我想将pages根目录中的文件夹移动到一个src文件夹中。我添加了jsconfig.json代码(如下),但是现在我收到错误消息“404 | 找不到此页面。” 有人有任何见解吗?(抱歉,网络开发初学者)
{
"compilerOptions": {
"baseUrl": "src"
}
}
Run Code Online (Sandbox Code Playgroud) 在Eclipse中,modulepath和classpath之间有什么区别,我应该使用哪一个在lib文件夹中添加jar?为什么JRE系统库出现在模块路径中?
当我编译一个依赖于我之前编译的其他模块的模块时,我必须指定该--module-path <directory>选项.这使我依赖的模块可见.
但与此同时,我还想让一些非模块化的Jar文件可见.但是,如果不使它们成为自动模块并且只是在--class-path some.jar旁边指定--module-path <directory>,那么javac似乎忽略了claspath并抛出"package yyy not found"和其他"未找到"错误.
我可以理解,使用--class-path和--module-path在同一个(编译)时间是非法的,但javac并没有以任何方式警告我.
我正在尝试定义Java 9模块.我已经定义了类似的东西:
module my.module.name {
}
Run Code Online (Sandbox Code Playgroud)
然后我的许多文件开始给我错误,他们找不到一些包.然后我使用了IntelliJ的自动帮助功能,它在我的module-info.java中添加了几个"require"语句.所以它变得像:
module my.module.name {
requires spring.web;
requires sshd.core;
requires com.fasterxml.jackson.core;
....
}
Run Code Online (Sandbox Code Playgroud)
现在IntelliJ显示我的所有代码没有错误.但是当我在"Maven Projects"窗口中单击"compile"时(我正在使用Maven 3.5.3和Oracle JDK 10进行编译),它告诉我以下内容:
src/main/java/module-info.java:[2,20] module not found: spring.web
src/main/java/module-info.java:[11,18] module not found: sshd.core
src/main/java/module-info.java:[13,35] module not found: com.fasterxml.jackson.core
...
same for the other modules I "require".
Run Code Online (Sandbox Code Playgroud)
据我所知,未定义为模块的第三方库会生成"自动"模块.所以我发现了我需要的其中一个罐子:
C:\Users\<my username>\.m2\repository\org\springframework\spring-web\5.0.5.RELEASE\spring-web-5.0.5.RELEASE.jar
Run Code Online (Sandbox Code Playgroud)
并希望使用以下命令查看"自动"模块的名称:
jar.exe" --file=spring-web-5.0.5.RELEASE.jar --describe-module
No module descriptor found. Derived automatic module.
spring.web@5.0.5.RELEASE automatic
...
Run Code Online (Sandbox Code Playgroud)
所以根据我的调查,我"需要"的模块的名称是正确的!我错过了什么?我为什么得到
module not found: spring.web
Run Code Online (Sandbox Code Playgroud)
和其他模块一样吗?我错过了一些路径或什么?
编辑:根据要求,这是我的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> …Run Code Online (Sandbox Code Playgroud) 我有一个项目.最初它是一个单一的模块项目,结构如此
java-cloud-sample\
src\
main\
java
pom.xml
Run Code Online (Sandbox Code Playgroud)
我决定将它变成一个多模块结构 - java 9无论如何我都会使用它.所以我把它分开了
java-cloud-sample\
java-cloud-rest-api\
src\
pom.xml
pom.xml
Run Code Online (Sandbox Code Playgroud)
root 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>pom</packaging>
<modules>
<module>java-cloud-rest-api</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
模块pom.xml看起来像这样
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我JMOD用这样的jmod工具创建了一个简单的文件
$JAVA_HOME/bin/jmod create --class-path classes test/samples.jmod
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试通过运行以下命令在该模块中执行一个类:
java -mp test -m de.mypackage/de.mypackage.Test
Run Code Online (Sandbox Code Playgroud)
这导致以下异常:
Error occurred during initialization of VM
java.lang.module.ResolutionException: JMOD files not supported: test/samples.jmod
at java.lang.module.Resolver.findWithBeforeFinder(java.base@9-ea/Resolver.java:729)
at java.lang.module.Resolver.resolveRequires(java.base@9-ea/Resolver.java:86)
at java.lang.module.Configuration.resolveRequiresAndUses(java.base@9-ea/Configuration.java:370)
at java.lang.module.ModuleDescriptor$1.resolveRequiresAndUses(java.base@9-ea/ModuleDescriptor.java:1986)
at jdk.internal.module.ModuleBootstrap.boot(java.base@9-ea/ModuleBootstrap.java:263)
at java.lang.System.initPhase2(java.base@9-ea/System.java:1928)
Run Code Online (Sandbox Code Playgroud)
如果我只是将我的classes目录(我用来创建JMOD文件)设置为模块路径,那么一切都按预期工作.
通常不可能JMOD在模块路径上有文件吗?如果是这种情况,有什么理由吗?
当我通过java -cp(没有--add-modules或--limit-modules)运行应用程序时,某些Java系统模块是可观察的,而其他的则不是.
例如,所有java.se模块都是可观察的.所有java.se.ee模块都无法观察到.我知道javafx.*模块是可观察的.jdk.unsupported并且jdk.shell也是可观察的.
所以,我的假设是正确的:如果没有--add-modules并且--limit-modules被指定,那么可观察的系统模块集包括所有系统模块,除了java.se.ee?
有没有可靠的方法来了解默认的可观察系统模块的确切列表?我知道有一个--list-modules选项,但它列出了所有模块,包括java.se.ee.
我一直在尝试在 Visual Studio Code 中设置 JavaFX-11。
我找到了这篇JavaFX-11 with VSCode 文章,其中解释了如何执行此操作,并按照步骤操作。
但是,我需要通过vmArgs在launch.json文件中添加一个条目来包含 JavaFX SDK 的模块路径:
{
"configurations": [
{
"type": "java",
"name": "CodeLens (Launch) - Main",
"request": "launch",
"vmArgs": "--module-path C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib --add-modules javafx.controls,javafx.fxml",
"mainClass": "hellofx.Main",
"projectName": "hellofx"
}
]
Run Code Online (Sandbox Code Playgroud)
}
正如您在vmArgs条目中看到的,是我到 JavaFX SDK 的本地路径。但是,当我尝试运行该程序时,出现以下错误:
错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib 导致:java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.2\lib
在过去的几个小时里,我一直试图弄清楚为什么它不起作用。我的论点写错了吗?我看到有.jmods文件。我应该下载那些文件吗?还有其他方法可以指定模块路径吗?
值得一提的是,我在 Windows 10 中运行 Visual Studio Code,所以我必须使用转义序列来使用反斜杠。
我正在尝试将一些遗留应用程序迁移到新的Java 9模块系统,以加强其封装.
我从外向内开始,假设外围的类具有最少的外部依赖性.
正如您所期望的那样,我已经宣布了一个非常开放的模块:
module com.example.user {
exports com.example.user;
}
Run Code Online (Sandbox Code Playgroud)
这会立即打破整个项目(在所有类中),突然每个外部依赖项的导入都不再解析(导致超过1k的Java问题):
导入com.atherexample无法解析
无法解析导入org.springframework
等等
同一项目中的本地软件包com.example.price仍可正常工作 - java.util等等.
使用Maven管理所有外部依赖项.在(Eclipse项目)构建路径中,我仍然可以将它们视为"Classpath"依赖项 - 但只能看到"Modulepath"中的JRE系统库.
这两个概念可以共存吗?目前,似乎module-info.java在项目中的任何位置,所有类路径依赖都停止工作?
我读过关于使用自动模块的内容,这似乎意味着您可以通过将它们包含在模块路径中来使用传统/非模块化jar,然后通过文件名引用它们.他们使用的例子:
module com.foo.myapp {
requires guava; // guava not yet modularised, so use the filename
}
Run Code Online (Sandbox Code Playgroud)
我找不到其他信息,但这似乎与Eclipse在自动生成module-info.java时使用的约定相符:
spring-core-4.3.8.RELEASE.jar
Run Code Online (Sandbox Code Playgroud)
变为:
requires spring.core;
Run Code Online (Sandbox Code Playgroud)
但是,这仍然导致Eclipse报告的Java错误:
spring.core无法解析为模块
Maven报道:
[ERROR] module-info.java:[39,16] error: module not found: spring.core
Run Code Online (Sandbox Code Playgroud)
...并且项目中具有外部依赖性的每个类仍然被破坏.
预先感谢,谁将帮助我。
故事:到目前为止,我的应用程序正在使用JDK8,但是现在我正在将应用程序迁移到Open JDK11并IVY用作依赖项管理器和Ant构建工具。
问题:我在eclipse中遇到了编译时问题javax,但是后来我将构建路径中的JRE lib从classpath更改为Modulepath。现在一切正常。但是,现在的主要问题是,在运行antbuild.xml使用Ant,这仍然给我相同的编译时错误。我想,我知道该怎么办,但是我不知道该怎么办。我必须在中的Open JDK11某处添加模块路径antbuild.xml。
主要问题:如何Open JDK11在antbuild.xml(基本蚂蚁构建文件)中设置为模块路径。
如果问题仍然无法理解,请告诉我。
module-path ×10
java ×8
java-9 ×6
maven ×3
classpath ×2
eclipse ×2
java-platform-module-system ×2
ant ×1
ivy ×1
java-11 ×1
java-module ×1
javafx ×1
javafx-11 ×1
next.js ×1
openjdk-11 ×1