Javaを楽に書けるらしい RubyやPython やGolangみたいに書ける
だがNetBeansで使おうとしてみたが8.2ではうまく動作せず2017/8現在
プロパティのとこにkotlinc内部のruntime.jarファイルをセットすると
動くことを確認 補完も動いているので 慣れてるNetbeansを使いたいが
まだ不安要素が拭いきれない 別ファイルの呼び出しでエラーが出る?
う~ん プラグインがまだダメな感じかあ
pluginを入れてみたが使い方わからずプロジェクト作成のとこも何も?出ない
これはGroovy(グルービー)やScala(スカラー)も同じくNetBeans上ではプラグインがちゃんと動かない
更新が止まってる もしくはサポート誰もしようとしていない;;
2018/1 もう一度動かしてみようとしたが動かない kotlinファイル
のメインクラスが認識出来ないみたい プロパティの所の設定が
よくわからない ソースにkotlincのlibフォルダを追加してみたり
ライブラリのコンパイルにkotlinのcompiler.jarを追加してみたり
実行にkotlinのruntime.jarを追加してみたが
ビルドは通るのだが実行するとメインクラスが見つかりませんと出る
おそらくまだ設定の何かが足りないのだろ
eclipseでも似たようなエラーが出てるので同じような問題かもしれない
現状 netbeansでktファイル内部のクラスを認識出来ないのかもれない
仕方ないのでVisual Studio Code (以下VSCode)を使ってみる
最初にJDKをインストールしておくことは当然
次にkotlinをDLするのだが 勘違いしてビルドされてない物を入れようとしたら
ファイル数が6万とかあってビビったw 素直にビルドされた物をDLしましょう
開発途中の版は素人は触っちゃダメですね>< 更新早いので注意
解凍したら中のKotlincのフォルダを適当なディレクトリに置くのだが
Kotlincの中のbinフォルダを必ずPathを通しましょう
VSCodeには拡張プラグインがあるので選択して入れてみたが
どうやらVSCodeでは拡張プラグインのCodeRunnerで
外部Ktファイルからの呼び出しでエラーが出てしまうのでうまく呼び出し出来ない
error: unresolved reference: が出てしまう 設定が悪いのか拡張プラグインの問題か
わからない
やりたいことはmain のtest1ファイルからtest2 ファイル の メソッドを呼び出したいだけ
test1.kt
package aaa
import aaa.xxx as xx
fun main(args: Array<String>) {
xx()
}
test2.kt
package aaa
fun xxx(){
println("qweqweq")
}
Eclipse を使ってみるNEON4.6を入れてみた こちらもプラグインがあったが
今度はメインクラスが見つからなかったかロード出来ないってエラーが出る なんだかなあ?
クラスの指定方法間違えてただけだった><
その後 パッケージの移動や名前変更など色々動かしているとまた同じエラーが表示されるようになってしまった
その原因はメインのクラス内部にfun main を書いていたためだった
メインとするクラスにはfun main ではなく コンストラクタか 別メソッドを書くべきなのね・・・
これで実行の構成でメインクラスが表示されるようになった
Javaの場合メインクラスとそのjavaファイルは同じ名前にしないとダメなはずだが
kotlinは違ってもいいみたい
実行の構成のメインクラス指定は
パッケージが有る場合
パッケージ名.ファイル名(先頭大文字)+Kt
パッケージが無い場合
ファイル名(先頭大文字)+Kt
となるみたいだ ソースがきっちりしていたら検索で出てくる
パースペクティブをKotlinに設定するとデフォで新規作成にkotlin関係のファイルが出てくる
エクスポートで実行用のjarファイルを作成しようとするが実行できない><
mainメソッドが指定されていないエラーが出る わからない;;
Tete.kt
package kkk
class Tete{
fun TeteKt(){
println("asdsad")
}
}
fun main(args: Array<String>){
var t = Tete()
t.TeteKt()
// TeteKt()
//println("qweqweqe")
}
2017/8現在 最新のOxygen4.7を入れてみたら動いたが しかしテーマは変更できるが
フォントの設定が出来ない;; kotlinファイル用の設定が無い感じJavaでは変更出来てるのに
なんだかなあ おそらく日本語化するとダメなんじゃないかなあ
まあ動いたので良しとするかな でもフォントが小さくて見ずらい><
eclipseにテーマのプラグイン入れたら設定の画面が表示されなくなって慌ててアンインストールしたら
今度は起動できなくなった;; ログ見てもわからないので コマンドで
> eclipse.exe -clean
をやったら起動できるようになった リフレッシュが必要なのね
次に本家のJetBrainsが作っているIDE IntelliJを使ってみる かなり動きがいい感じ
日本語化もできる
少しだけハマった パッケージ名やクラス名を途中で変更することはあまり無いかと思うが
それをした時は必ず構成の編集でパッケージ名やクラス名の変更をして確認しないと
エラーが出てしまう まあ当然のことだが。。。
でその後 プロジェクトの再ビルドと再コンパイルをする しなくてもよかった
それで実行出来なければ構成ファイルを確認する
最初は起動構成の実行を押しとかないと実行できない
test2.kt ファイルを呼ぶ場合で 内部にメソッドのみ クラス無しの場合は
以下のような書き方で呼び出せる
test1.kt
package aaa
import aaa.xxx as xx
fun main(args: Array<String>) {
xx()
}
test2.kt
package aaa
fun xxx(){
println("qweqweq")
}
test2.kt ファイルを呼ぶ場合で クラス有りの場合は
以下のような書き方で呼び出せる 違うのはクラスの場合メインファイル側でNEWする感じ
test1.kt
package aaa
import aaa.*
fun main(args: Array<String>){
var pp = aaa.eee()
pp.www()
}
test2.kt
package aaa
class eee(){
fun www(){
println("pppppp")
}
}
まだこれしか やってないけど どうやらまともに動くのはIntelliJだけのようだなあ
他のIDEを使うのは時間の無駄かもしれない・・・
jarファイルを作るのはプロジェクトの上で右クリックしモジュール設定の中に成果物という項目
がある(日本語化してる場合) 中にプロジェクトビルドに含めるにチェックを入れると
出力ディレクトリに実行用のjarファイルが作られる と甘く見ていたが
プロジェクト構造の中の成果物でJARの空を作り
空ではなく依存関係を持つモジュールを選択しなければいけなかった
そしてメインのクラス名を直接書き込む(参照からは呼び出せないみたいだ)
その下に出力レイアウトがあり 右には使用可能な要素がある
この中のモノを出力レイアウトの方に移動させないとダメだった
分かりにくい仕様だなあ
見ればどんなファイルかは分かると思うが 必要な物だけ移動させればいい
プロジェクトビルドに含めるにチェックを入れとくとビルド時点でJarファイルが作られる
TopのBarのビルドの中の成果物のビルドを押すと ビルドとリビルドとクリーンと編集がある
自分のOSのアカウント名を含めたくない時はモジュールの除外にdictionaries
を設定しとけばjarの中には入らない
Javaオリジナルのメソッドの呼び出しが独自仕様になる 部分が 「はあ?」って感じ
なぜJavaと同じメソッド名を使わなかったのか。。。 学習コストが余計に掛かるなあ