小编mal*_*c4k的帖子

是否可以在javac(JDK 9)中混合使用--class-path和--module-path?

当我编译一个依赖于我之前编译的其他模块的模块时,我必须指定该--module-path <directory>选项.这使我依赖的模块可见.

但与此同时,我还想让一些非模块化的Jar文件可见.但是,如果不使它们成为自动模块并且只是在--class-path some.jar旁边指定--module-path <directory>,那么javac似乎忽略了claspath并抛出"package yyy not found"和其他"未找到"错误.

我可以理解,使用--class-path--module-path在同一个(编译)时间是非法的,但javac并没有以任何方式警告我.

java classpath java-9 module-path

23
推荐指数
2
解决办法
8949
查看次数

WAR文件的Java 9模块化也是如此吗?

Java EE 7应用程序服务器,特别是Servlet 3.1容器应该允许我们部署包含Web应用程序的WAR文件.WAR文件本质上是一个带有部署描述符(web.xml)和其他几个元素的JAR .

另一方面,Java 9引入了模块化JAR文件的概念,即带有模块descriptor(module-info.class)的JAR,它根据项目Jigsaw制作模块.

那么,WAR文件是否也包含模块描述符并制作"模块化WAR文件"?

是否已有应用程序服务器能够接受"模块化WAR文件"的部署?

一般来说,Java 9模块化方面的servlet容器和WAR文件的未来是什么?

java servlets java-9

22
推荐指数
1
解决办法
2768
查看次数

如何在后台运行自定义Symfony2命令

Symfony2使开发人员能够创建自己的命令行命令.它们可以从命令行执行,也可以从控制器执行.根据Symfony2官方文档,可以这样做:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $command = $this->getApplication()->find('demo:greet');

    $arguments = array(
        ...
    );

    $input = new ArrayInput($arguments);
    $returnCode = $command->run($input, $output);

}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我们等待命令完成它的执行并返回返回代码.

如何从控制器执行命令将其分配到后台而不等待它完成执行?

换句话说,相当于什么

$ nohup php app/console demo:greet &
Run Code Online (Sandbox Code Playgroud)

php symfony

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

创建专用于特定模块化应用的自定义运行时映

假设我正在开发一个由2个模块组成的模块化应用程序:com.spacey.explorer这取决于com.spacey.rocket模块.我在某些bin目录中有他们的模块化JAR文件.

我想准备轻量级JRE来运行它.显然,我使用jlink工具:

$ jlink --module-path /opt/jdk-9/jmods:../bin --add-modules com.spacey.explorer --output ~/custom-jre3
Run Code Online (Sandbox Code Playgroud)

现在,当我在JRE中列出模块时,我得到以下内容:

$ java --list-modules 
com.spacey.explorer
com.spacey.rocket
java.base@9
Run Code Online (Sandbox Code Playgroud)

也就是说,我的应用程序模块捆绑到JRE中.但是如果我想构建一个只有JDK源模块的JRE,这些模块足以运行我的应用程序保持我的应用程序模块分离,我必须知道我的JDK依赖项是什么(在这个例子中就是这样java.base)并明确指定它们喜欢:

$ jlink --module-path /opt/jdk-9/jmods --add-modules java.base --output ~/custom-jre3
Run Code Online (Sandbox Code Playgroud)

有没有办法让jlink为我这样做?或者任何可以为我找出那些JDK起源的依赖项的工具?

java jlink java-9 jdeps java-module

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

Java 9中的可靠配置

Java 9中项目Jigsaw的主要目标之一是可靠的配置.也就是说,Java 9承诺解决类路径机制缺陷,它允许java启动程序运行程序,而不确保在运行时加载所有必需的类,这曾经导致java.lang.NoClassDefFoundErrors.

这是module-info.java通过在全新--module-path选项中声明模块依赖性来完成的.在启动Java应用程序之前分析模块图.

但是,我仍然可以做到以下几点.

  1. 可以说我有两个模块com.spacey.explorercom.spacey.rocket. com.spacey.explorer使用com.spacey.rocket.RocketZcom.spacey.rocket模块定义和导出的类.编译和JARing两个模块后,一切正常运行.
  2. 现在我com.spacey.rocket.RocketZcom.spacey.rocket模块中删除类型并重新编译并重新JAR只有这一个模块.
  3. com.spacey.explorer使用新编译的com.spacey.rocket模块运行以前编译的模块.
  4. 我得到...... java.lang.NoClassDefFoundError,这可能是在4小时的应用程序正常运行时间之后.

有没有办法真正确保在运行Java应用程序时不仅验证了模块图(模块路径)的完整性,而且还完成了对实际类型可访问性的全面检查?

java java-9

4
推荐指数
1
解决办法
204
查看次数

内置 JFR(Java 飞行记录器)事件记录在哪里?

使用 JDK 11,如果查看 JRF 记录的摘要,您可以看到有 140 个不同的事件。其中一些可能没有发生,这在输出中清晰可见:

$ jfr summary /c/dev/jfrec/ddos.jfr

 Version: 2.0
 Chunks: 1
 Start: 2020-10-31 19:39:36 (UTC)
 Duration: 54 s

 Event Type                              Count  Size (bytes)
=============================================================
 jdk.JavaMonitorWait                      2727         79342
 jdk.NativeMethodSample                   2590         40722
 jdk.ThreadPark                           2125         89947
 ...
 jdk.GCHeapConfiguration                     1            30
 jdk.YoungGenerationConfiguration            1            21
 jdk.JavaMonitorInflate                      0             0
 jdk.ReservedStackActivation                 0             0
Run Code Online (Sandbox Code Playgroud)

它们都具有类似于 package 中的 Java 类的名称jdk

另一方面,如果我想实现自己的自定义 JFR 事件,我必须扩展该类jdk.jfr.Event,因此我认为所有jdk.*事件也都扩展该类jdk.jfr.Event

在官方 Java SE Javadocs ( https://docs.oracle.com/en/java/javase/11/docs/api/index.html )中jdk.jfr.Event,有文档记录,但没有记录jdk.*类。

如果不在官方 Java …

java jfr java-11

4
推荐指数
1
解决办法
1127
查看次数

标签 统计

java ×5

java-9 ×4

classpath ×1

java-11 ×1

java-module ×1

jdeps ×1

jfr ×1

jlink ×1

module-path ×1

php ×1

servlets ×1

symfony ×1