Rustが新カテゴリのラストと言ったが、あれはウソだ・・・。
というわけで、Kotlinをやる。
JavaプログラマのためのKotlin入門 - Qiita
Kotlinとは――読み方、メリット、「Java」とのコード比較、実行までのチュートリアル (1/3):Android Studioで始めるKotlin入門(1) - @IT
Release 1.3.11 · JetBrains/kotlin · GitHub
Androidプロジェクトでも出来るが、main関数はコマンドラインじゃないと出来ないので、コマンドラインでまずはやる。
当初、
experimental-kotlin-compiler-windows-x64.zip
こちらをダウンロードして、
こんな感じでパスを通したが、コンパイルすると、
C:\Project\Cloud\github.com\Sample\kotlin\main\main\src\main>kotlinc-jvm main.kt -include-runtime -d main.jar WARN: Failed to load filesystem access layer: Windows 10, 1.8.0_181, nio2=true java.lang.reflect.InvocationTargetException at com.intellij.openapi.util.io.FileSystemUtil$Nio2MediatorImpl.getAttributes(Unknown Source) at com.intellij.openapi.util.io.FileSystemUtil.check(Unknown Source) at com.intellij.openapi.util.io.FileSystemUtil.getMediator(Unknown Source) at com.intellij.openapi.util.io.FileSystemUtil.<clinit>(Unknown Source) at com.intellij.openapi.util.io.FileSystemUtil.getAttributes(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandler.setFileAttributes(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandler$1.createAccessor(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandler$1.createAccessor(Unknown Source) at com.intellij.util.io.FileAccessorCache.createHandle(Unknown Source) at com.intellij.util.io.FileAccessorCache.get(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandler.getCachedZipFileHandle(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandler.acquireZipHandle(Unknown Source) at com.intellij.openapi.vfs.impl.ZipHandlerBase.createEntriesMap(Unknown Source) at com.intellij.openapi.vfs.impl.ArchiveHandler.getEntriesMap(Unknown Source) at com.intellij.openapi.vfs.impl.jar.CoreJarHandler.<init>(Unknown Source) at com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem.lambda$new$0(Unknown Source) at com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem$$Lambda$52.fun(Unknown Source) at com.intellij.util.containers.ConcurrentFactoryMap$3.create(Unknown Source) at com.intellij.util.containers.ConcurrentFactoryMap.get(Unknown Source) at com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem.findFileByPath(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.findJarRoot(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.contentRootToVirtualFile(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.access$contentRootToVirtualFile(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$6.invoke(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$6.invoke(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.convertClasspathRoots(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<unknown>(Unknown Source) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(Unknown Source) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(Unknown Source) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(Unknown Source) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(Unknown Source) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(Unknown Source) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(Unknown Source) at org.jetbrains.kotlin.cli.common.CLITool.exec(Unknown Source) at org.jetbrains.kotlin.cli.common.CLITool.exec(Unknown Source) at org.jetbrains.kotlin.cli.common.CLITool.exec(Unknown Source) at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(Unknown Source) at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(Unknown Source) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(Unknown Source) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(Unknown Source) Caused by: java.lang.ExceptionInInitializerError at sun.nio.fs.Util.split(Unknown Source) at sun.nio.fs.WindowsFileSystem.<init>(Unknown Source) at sun.nio.fs.WindowsFileSystemProvider.<init>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.<unknown>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at sun.nio.fs.DefaultFileSystemProvider.<unknown>(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder.access$000(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder$1.<unknown>(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder$1.<unknown>(Unknown Source) at java.security.AccessController.<unknown>(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(Unknown Source) at java.nio.file.FileSystems$DefaultFileSystemHolder.<clinit>(Unknown Source) at java.nio.file.FileSystems.getDefault(Unknown Source) at java.nio.file.Paths.get(Unknown Source) ... 41 more Caused by: java.nio.charset.UnsupportedCharsetException: MS932 at java.nio.charset.Charset.forName(Unknown Source) at sun.nio.fs.Util.<clinit>(Unknown Source) ... 59 more C:\Project\Cloud\github.com\Sample\kotlin\main\main\src\main>
こうやってエラーが出てしまう。
kotlin-compiler-1.3.11.zip
こっちをダウンロードする。
Cドライブ直下に展開して、
パスを通す。
(それより前にJDK入れたりJAVA_HOME設定したりいろいろやったけど、不要だったかな・・・。)
main.ktに、
こんな風に書いて、
C:\Project\Cloud\github.com\Sample\kotlin\main\main\src\main>kotlinc main.kt -include-runtime -d main.jar C:\Project\Cloud\github.com\Sample\kotlin\main\main\src\main>kotlin main.jar ABCDE C:\Project\Cloud\github.com\Sample\kotlin\main\main\src\main>
コンパイル、そして実行できた。
funの後に関数名、そして、引数をArrayにしているのはいいね。
そうMainClassが必要ない、そして、printlnもSystem.outが必要ない、こういうのが特徴。
Sample/kotlin/main/main/src/main at master · bg1bgst333/Sample · GitHub