codevs for studentに参加しました。
友達から誘いがあり、コードvsに参加しました。
codevs https://student.codevs.jp/
今回からHardとNormal部門に分かれたらしく、初めてなのでNormal部門に参加。
javaでプログラムを書きました。
その際、結構はまったので今後のため、まとめときます。
http://charlie1012.hatenablog.jp/entry/2014/12/27/222419
http://blog.goo.ne.jp/field_light/e/d860f661e765928cb0fca532c02a64d1
を参考にさせてもらい、jarファイルで実行していたのですが、
決勝進出が決まり、決勝用の検証用サーバーで環境構築する際に初めて気がついたのですが、
jarにしなくてもできて えっ!できるじゃん!ってなりましたw
以下Main.javaファイルについて書きます
Javaで実行
codevsのjnlpを開いてみます。
ウィンドウの一番下に
directory: C:\Users\takumi\Desktop\codevs\codevsforstudent
と書いてあります。
このパスの直下にファイルをいれてあげれば実行できます。
この場合、Desktop
にあるcodevsforstudent
フォルダに、Main.java
とそのクラスたちを入れます。
javaをコンパイルし実行
javac Main.java
java Main
するとカレントフォルダにclassが作られます。
写真ではcodevsforstudent
フォルダ内で作業しています。
最初にAI名のbebe.java
が表示されたので実行確認できました。
cmdで実行したときのと同じコマンドのjava Main
と入力し実行を押せば実行できます。
またjava -cp パス Main
のように、パス(フルパス)を指定して実行してもできます。
javac Main.java & java Main
と書くことでコンパイルと実行を1回でできるのですが、
これはできないみたいなのでおとなしく java Main
と書いたほうがよさそうです。
コンパイル後実行できないのはjavaのクラスパスが間違っているので、
set CLASSPATH=.;
などでカレントフォルダをみるようにしたり、クラスパスの設定を変えれば実行できるようになります。
Jarで実行
上記のURLでまとめられていますが、一応書いときます。
jar化にする際にメインクラスを指定してあげるとできるみたいです。
テキストエディタで codevs.mani
を
Main-Class: Main
と改行をして作成
javac Main.java
でコンパイルしファイルがあるフォルダで
jar cvfm codevs.jar codevs.mani *.class
でcodevs.jarができます。
実行はjava -jar codevs.jar
また eclipseなどの統合開発環境で出力することで、パッケージやメインクラスの指定を気にすることなく実行できます。