Intellij 2017.3 + Gradle でJavaプロジェクトを作成する

IntellijJavaのプロジェクトを作成したときに、戸惑った部分があるので書き残しておきます。






環境









環境構築



JavaやGradleのインストールについては下記を参考にしました。



qiita.com






プロジェクト作成



Create New Project をクリックします。



f:id:mtomitomi:20180106194612p:plain





今回はGradleを選びました。SDKが設定されていない場合は手動で設定してください。

GroovyやKotlinなどはお好みで選択してください。



f:id:mtomitomi:20180106194622p:plain





IDを適当に付けます。



f:id:mtomitomi:20180106194633p:plain





Use default gradle wrapper を選択、JVMを設定します。

その他はお好みで選択してください。



f:id:mtomitomi:20180106194833p:plain





グループ名を適当に付けて「Finish」ボタンをクリックします。



f:id:mtomitomi:20180106194711p:plain





プロジェクトが作成されます。






動作確認



/src/main/java/ に適当に「Hello.java」を作成します。



Hello.java




public class Hello {
public static void main(String[] args) {
System.out.println("Hello Java!!");
}
}





ですが、Hello.javaを実行するとビルドが通らず下記エラーが出てしまいます。



Error:Internal error: (java.lang.NullPointerException) null
java.lang.NullPointerException
at org.jetbrains.jps.model.serialization.JpsProjectLoader.loadFromDirectory(JpsProjectLoader.java:156)
at org.jetbrains.jps.model.serialization.JpsProjectLoader.loadProject(JpsProjectLoader.java:96)
at org.jetbrains.jps.model.serialization.impl.JpsSerializationManagerImpl.loadModel(JpsSerializationManagerImpl.java:42)
at org.jetbrains.jps.cmdline.JpsModelLoaderImpl.loadModel(JpsModelLoaderImpl.java:50)
at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:79)
at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:280)
at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:138)
at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:235)
at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)





どうやら参照するbuild.gradleが正しくないようです。

左上の「×」を押してプロジェクトを一旦閉じます。

最初の画面で今度はOpenをクリックします。



f:id:mtomitomi:20180106200129p:plain





/Users/{自分のユーザー名}/IdeaProjects/{作成したプロジェクト} 配下にある、build.gradleを選択します。

ダイアログで「Open as Project」 を選択します。



f:id:mtomitomi:20180106200537p:plain





ここの設定はそのままで問題ないです。



f:id:mtomitomi:20180106200516p:plain





上書きするので「Yes」をクリックします。



f:id:mtomitomi:20180106200704p:plain





新しく作成したほうを使いたいので「Delete」をクリックします。



f:id:mtomitomi:20180106200828p:plain





新しく作成されたプロジェクトでHello.javaを再度実行すると、正常に通るはずです。



実行結果



Hello Java!!

Process finished with exit code 0






Lombokを入れる場合



Settings -> Plugins -> Browse Repository で「lombok」を検索すると出てくるのでinstallします。

インストールしただけではアノテーションが効かないので、

Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors で「Enable annotation processing」にチェックを入れます。

これで効くようになります。






エディタの設定



ファイル保存時にインデント等のフォーマットを修正してくれるよう設定します。

git管理にした後、ファイルの変更がある状態で下記の手順を実行します。



nekopunch.hatenablog.com





これで、とりあえず動くようになりました。

それでは素敵なJavaライフを!