*未完成
似乎Quarkus或GraalVM在世界上很流行,并且响应新配置和开发的趋势使我们对草率的Java感到厌倦。
因此,再次像往常一样,让我们??使用WSL。
TL; DR
它可以正常工作,但是我无法制作基本的本机版本。如果您有任何信息,请告诉我。
假设
Docker必须正在运行。由于预算原因,我使用Windows 10 Home,因此无法将Docker用于Windows。这将需要一些努力。
https://qiita.com/koinori/items/78a946fc74452af9afba上有一篇很棒的文章,并且已经确认它可以与以下组合一起使用。
--WSL Ubuntu 16.04
-Docker CE 17.03.3
*实际上,到目前为止,这样做很麻烦
我想使用一个新的版本,例如Ubuntu 18.04,但是现在似乎没有办法让Docker正常工作。您将不得不使用16.04,这将阻止apt安装包括JDK之类的新安装。您需要分别放置二进制分发等。
必须安装以下内容。括号中的版本是实际尝试的版本。
--OpenJDK 11(11.0.2):当前不适用于OpenJDK 12
-Apache Maven 3.5.3(3.6.1)
--GraalVM(ce-1.0.0-rc15)
*如上所述,它不能使用apt进行安装,但是安装过程并不困难,因此将省略
夸库斯--dev
这是官方入门。
https://quarkus.io/guides/getting-started-guide
1 2 3 4 5 | mvn io.quarkus:quarkus-maven-plugin:0.14.0:create \ -DprojectGroupId=org.acme \ -DprojectArtifactId=getting-started \ -DclassName="org.acme.quickstart.GreetingResource" \ -Dpath="/hello" |
这是唯一的早期故事。这将收集您所需的内容并创建一个最小的项目。使用以下命令执行它。
1 | ./mvnw compile quarkus:dev |
现在您可以在http://本地主机:8080 / hello访问它。它只是返回"你好"。要做到这一点,需要采取很多步骤,因此您会感到有成就感。当我更改源时,它将进行热重装。很不错。 (请重新加载您的浏览器...)
您可以在阅读本指南的续篇时尝试各种尝试。
夸克斯--native
好吧,这是核心版本的原始版本。它也是官方指南的续篇。我会做的。
https://quarkus.io/guides/building-native-image-guide.html
使用以下命令构建本机版本。
1 | ./mvnw package -Pnative. |
如果运行生成的跟踪,则将看到其运行与运行开发版本时相同。
1 | ./target/getting-started-1.0-SNAPSHOT-runner |
查看续篇,它说以下命令构建了一些要与docker(而不是local)一起运行的东西。
1 | ./mvnw package -Pnative -Dnative-image.docker-build=true |
这在我的环境中不起作用。将发生以下错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] docker run -v /mnt/c/Users/odistagon/Documents/projects/getting-started/target:/project:z --rm --user 1000:1000 quay.io/quarkus/centos-quarkus-native-image:graalvm-1.0.0-rc15 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar getting-started-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:FallbackThreshold=0 -H:+PrintAnalysisCallTree -H:-AddAllCharsets -H:EnableURLProtocols=http -H:-SpawnIsolates -H:-JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace [getting-started-1.0-SNAPSHOT-runner:6] classlist: 8,022.44 ms [getting-started-1.0-SNAPSHOT-runner:6] (cap): 418.82 ms [getting-started-1.0-SNAPSHOT-runner:6] setup: 1,107.75 ms Fatal error: com.oracle.svm.core.util.VMError$HostedError: java.nio.file.AccessDeniedException: /tmp/SVM-6092077881174118427/LibCHelperDirectives.c at com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:70) at com.oracle.svm.hosted.c.codegen.CSourceCodeWriter.writeFile(CSourceCodeWriter.java:182) at com.oracle.svm.hosted.c.codegen.CSourceCodeWriter.writeFile(CSourceCodeWriter.java:160) at com.oracle.svm.hosted.c.codegen.QueryCodeWriter.write(QueryCodeWriter.java:77) at com.oracle.svm.hosted.c.CAnnotationProcessor.process(CAnnotationProcessor.java:78) at com.oracle.svm.hosted.c.NativeLibraries.finish(NativeLibraries.java:306) at com.oracle.svm.hosted.NativeImageGenerator.processNativeLibraryImports(NativeImageGenerator.java:1524) at com.oracle.svm.hosted.NativeImageGenerator.setupNativeLibraries(NativeImageGenerator.java:998) at com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:830) at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:522) at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:442) at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) Caused by: java.nio.file.AccessDeniedException: /tmp/SVM-6092077881174118427/LibCHelperDirectives.c at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434) at java.nio.file.Files.newOutputStream(Files.java:216) at java.nio.file.Files.newBufferedWriter(Files.java:2860) at com.oracle.svm.hosted.c.codegen.CSourceCodeWriter.writeFile(CSourceCodeWriter.java:174) ... 14 more Error: Image build request failed with exit status 1 |
我觉得我无法以某种方式解决它。如果您知道解决方案,请让我知道...
我使用本地版本的Runner进行了docker构建,但是当我运行它时,它崩溃了。
当我能够做到这一点时,我在kubernetes上运行了图像……这将再次花费时间,但是从某种意义上说它已经保存了。
奖金
最近,我喜欢使用VSCode,但是在使用WSL时,由于(笨拙的)drvfs等原因,我有使用它的习惯。同时,解决了它的扩展出现了。
https://twitter.com/code/status/1124057230624665665620
https://aka.ms/vscode-remote/download/extension
如果将其放入,则可以直接在WSL中打开该文件夹。它非常简单易用。我没有尝试过,但似乎它也可以直接连接到Docker容器,这视环境而定也很方便。