我在我的linux机器上安装了jdk9但jre文件丢失了,我是否下载了错误的tar文件?
这是我下载的tar文件 jdk-9-ea+174_linux-x64_bin.tar.gz
在ProcessHandle简单的"Dockerized"Java程序中尝试使用Java 9中的新API时,我发现在检索正在运行的进程的进程ID时,行为方面存在差异.特别是在调用方法时ProcessHandle.pid(),Docker上生成的PID与主机上显示的本机ID不同,尽管文档说该方法"返回进程的本机进程ID".另外,结果之间存在差异ProcessHandle.allProcesses().
为了演示,以下程序执行以下操作:
public static void main(String[] args) {
System.out.println("### Current process info ###");
ProcessHandle currentProcess = ProcessHandle.current();
printInfo(currentProcess);
System.out.println();
// Fork a child process that lasts for a few seconds
spawnProcess("jshell --startup ./sleep.txt");
printAllVisibleProcesses();
}
private static void printAllVisibleProcesses() {
System.out.println("### Visible processes info ###");
ProcessHandle.allProcesses().forEach(ProcessHandleExamples::printInfo);
System.out.println();
}
private static void spawnProcess(String command) {
System.out.println("Spawning: " + command);
try {
Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
} …Run Code Online (Sandbox Code Playgroud) Java9引入了类似于OSGI和Maven Dependecies的强大模块性.
是否有maven插件能够构建检测maven依赖项的java 9依赖项?
例如,来自
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
....
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.3-jre</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
至
module my-module{
requires com.google.guava;
exports com.mycompany.app;
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇文章,但它没有那么有用 - 如何表达maven对java ee功能的依赖以转换到Java 9?
在Windows 10系统上全新安装Repast Symphony 2.5.0(Win 64bit)和JDK 9.0.1后,导入JZombies_Demo示例时,无法使用默认配置启动模型.
错误说:
An internal error occurred during: "Launching JZombies_Demo Model".
org.codehaus.groovy.eclipse.core.builder.GroovyClasspathContainer.<init>(Lorg/eclipse/core/resources/IProject;)V
Run Code Online (Sandbox Code Playgroud)
当我编辑默认运行配置时,在Dependencies选项卡中,我只看到JRE系统库而没有其他内容.在同一选项卡中,启用了恢复默认条目 - 当我按下它时,将添加Repast Symphony中的所有依赖项,并且之前的错误消失.但是,在这种情况下,当尝试启动另一个错误时:
saf.core.runtime.Boot - null
java.lang.NullPointerException
at saf.core.runtime.Boot.init(Boot.java:79)
at saf.core.runtime.Boot.main(Boot.java:246)
at repast.simphony.runtime.RepastMain.main(RepastMain.java:43)
Run Code Online (Sandbox Code Playgroud)
我还在Repast Mailing List上看到了这个问题,看到有人在谈论boot.properties文件X\eclipse\plugins\repast.simphony.runtime_2.5.0夹中丢失的文件.但是,该文件在那里很好.因此,我尝试将此链接与上一个错误相关联,并看到(RepastMain.java:43)该pathInfo值实际上是X\eclipse\plugins\repast.simphony.bin_and_src_2.5.0.因此,我尝试boot.properties将运行时目录复制到bin_and_src - 这删除了以前的错误,但带来了一些与UI初始化和错误相关的警告:
repast.simphony.ui.RSUIPlugin - Fatal error starting Repast
java.lang.NoSuchMethodError: com.jgoodies.forms.layout.ColumnSpec.createGap(Lcom/jgoodies/forms/layout/ConstantSize;)Lcom/jgoodies/forms/layout/ColumnSpec;
at com.jgoodies.forms.layout.FormSpecs.<clinit>(FormSpecs.java:115)
at repast.simphony.ui.RunOptionsPanel.initComponents(RunOptionsPanel.java:114)
at repast.simphony.ui.RunOptionsPanel.<init>(RunOptionsPanel.java:39)
at repast.simphony.ui.RSGui.addRunOptionsView(RSGui.java:558)
at repast.simphony.ui.RSApplication.initGui(RSApplication.java:655)
at repast.simphony.ui.RSAppConfigurator.fillBars(RSAppConfigurator.java:52)
at saf.core.ui.GUICreatorDelegate.createDisplay(GUICreatorDelegate.java:160)
at saf.core.ui.GUICreator.createDisplay(GUICreator.java:12)
at repast.simphony.ui.RSUIPlugin$1.run(RSUIPlugin.java:102)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我有以下问题:我的日食氧气无法运行(错误附加).当我在下载后运行它(在9月1日和12月2日测试)时,一切都很好.但是,当我重新启动计算机时,除非重新安装,否则eclipse不会重新启动.我已经清除了eclipse缓存和我的项目一样(甚至从repo获取了新版本),工作区和eclipse安装位置也很新鲜.我已阅读如https://bugs.eclipse.org/bugs/show_bug.cgi?id=475392,https://bugs.eclipse.org/bugs/show_bug.cgi?id=514895和其他相关的帖子,没"尽管如此.任何的想法?我正在使用Windows 10 64位和JDK 9.0.1 + 11.我唯一的插件是BndTools 3.5,最新的,项目需要java 8(当前运行时jdk是152).在运行我的项目并同时在示例bnd项目(http://enroute.osgi.org/tutorial_base/600-testing.html)上解决依赖关系后的星期五开始出现问题.之后无法运行eclipse.但是,我之前做过,并没有遇到任何问题(我的意思是打开示例并运行它).另外,我已经清除了p2,mvn和bnd缓存.
来自eclipse .log的下面提到的堆栈:
!SESSION 2017-12-18 16:47:57.660 -----------------------------------------------
eclipse.buildId=4.7.2.M20171123-0800
java.version=9.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=pl_PL
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
!ENTRY org.eclipse.osgi 4 0 2017-12-18 16:47:59.711
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4533)
at org.eclipse.swt.SWT.error(SWT.java:4448)
at org.eclipse.swt.SWT.error(SWT.java:4419)
at org.eclipse.swt.widgets.Display.error(Display.java:1263)
at org.eclipse.swt.widgets.Display.checkDevice(Display.java:767)
at org.eclipse.swt.widgets.Display.addListener(Display.java:628)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:187)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:195)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at …Run Code Online (Sandbox Code Playgroud) 我的代码的目标环境使用较旧的Java版本(Java 7,Java 8).我使用JDK 7进行开发.
如果我使用最新的JDK进行开发,那将是否有优势,即JDK 9(并指定source = 1.7和target = 1.7)?
我知道我的代码不能使用目标平台上不可用的任何API.
我从3月18日开始下载了最后一个Oxygen(3A)软件包,以便尝试使用Java 9.使用本教程,我试图掌握模块.
但是,在本教程中,在向Java项目添加源文件夹时,有一个我没有的复选框:
[X]创建module-info.java(9或更高版本)
我试图获得一些关于Eclipse的Java 9兼容性的补丁,但是失败了.实际上,在此页面上,向用户显示以下消息:
注意:此功能修补程序已禁用.它原本打算安装在4.7.1版本之上.
该Help > About Eclipse窗口显示以下信息:
版本:Oxygen.3a版本(4.7.3a)
但是,似乎并非如此.我已经在我的计算机上安装了JDK 9,并在我的eclipse.ini文件中设置了这些行:
-vm
C:\ Program Files\Java\jdk-9.0.4\bin\javaw.exe
-vmargs
--add模块= ALL-SYSTEM
所以Eclipse应该运行Java 9并给我正确的选择.
我错过了什么吗?我认为他们会删除这种复选框似乎不符合逻辑.
什么是Java 9模块的命名约定?假设我的包名是me.jasonyeo.awesome.project,并且每当我module-info.java在IDEA中创建文件时,它都会建议我命名它awesome.project
这是惯例吗?或者我应该说出来me.jasonyeo.awesome.project吗?
我不确定我在这里做错了什么,我开始研究java 10项目(当然使用java 9的新模块系统),所以我怀疑它与此有关.
我有以下项目目录结构:
但是,IntelliJ中的运行按钮显示为灰色,看起来intellij不认为这是一个结构合理的Java项目.
我仔细阅读了文档,但其中很多是循环解释,导致更多的混乱而非清晰度.
我看到.idea目录有一个modules子目录,看起来它包含一些相关的东西 - 我可能在这里做错了,但我不知道是什么.
这是我的build.gradle文件,因为我怀疑这在这里很重要:
plugins {
id 'java'
id 'application'
id 'idea'
}
group 'com.chrismailloux'
version '0.1'
description = "Tutorial application developed to learn LWJGL and OpenGL."
sourceCompatibility = 1.8
task wrapper(type: Wrapper) {
gradleVersion = '4.9'
}
repositories {
mavenCentral()
}
dependencies {
// Dependencies left out for brevity
}
Run Code Online (Sandbox Code Playgroud)
有人能把我直接放在这里吗?我该如何解决这个问题才能运行项目?
我试图熟悉Java 9中引入的模块系统,我想知道利用它的最佳方法。
对于我正在编写的库,我想执行以下操作(忽略软件包的命名):
com.myproject.api。用户可以使用此类中的所有内容。com.myproject.core。用户应该无法在此处访问任何内容。我的理由是,用户无需对实现逻辑感到困惑或不知所措。取而代之的是,他们可以仅查看(希望)干净且记录良好的接口。
但是,由于Java程序包的工作方式,很难在不将所有程序包都私有的情况下限制某些类的使用。但是我不喜欢将所有类都放在一个包中,而是希望将它们组织成各种包。
在阅读了有关模块系统的知识之后,我相信我可以做以下事情来实现我想要的。这是module-info.java文件:
module com.myproject {
exports com.myproject.api;
}
Run Code Online (Sandbox Code Playgroud)
据我了解,我的库用户将能够使用com.myproject.api包中定义的所有内容(通过require com.mypojrect.api在其自己的module-info文件中使用)。
但是,用户是否可以通过任何方式访问com.myproject.core软件包中的任何内容?我对他们(通过IDE或源代码本身)查看代码没有问题,但我只是不想最终支持我不想公开的类/方法/逻辑。
我担心没有模块化应用程序的用户或将我的库JAR放在类路径中的用户将以某种方式找到一种方法来访问假定的受限软件包。
如果您需要其他任何信息,请告诉我。
java-9 ×10
java ×8
java-module ×3
bndtools ×1
docker ×1
eclipse ×1
gradle ×1
java-platform-module-system ×1
launch ×1
maven ×1
modularity ×1
module-info ×1
windows ×1