notebook

都内でWEB系エンジニアやってます。

windowsでscala開発のためにやったこと

ちょっと前のメモだけど掘り出してきました

まずコンソールが微妙だと話にならないので下記と同じようにいろいろインストールする

僕が思う最強のWindowsコマンドプロンプト - 猫にWeb

  • gow
  • clink
  • git
  • conemu

activator

activatorのインストール

Build Reactive Applications with Lightbend Activator | @lightbend

からインストール

activator.batへのパスを環境変数へ追加する

jdkのインストール

Java SE Development Kit 8 - Downloads

JDKをインストールする

java.exeへのパスを環境変数へ追加する

chocolatey

下記を参考にインストール

Windows での開発環境構築は、Chocolatey を使おう! - はしくれエンジニアもどきのメモ

  • インストール
powershell -NoProfile -ExecutionPolicy unrestricted  -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
  • 確認
> choco -v
0.9.9.12

sbt

> choco install sbt
Installing the following packages:
sbt
By installing you accept licenses for the packages.

sbt v0.13.9
The package sbt wants to run 'chocolateyInstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider setting
 'allowGlobalConfirmation'. Run 'choco feature -h' for more details.
Do you want to run the script?
 1) yes
 2) no
 3) print
yes
 Downloading sbt 32 bit
   from 'https://dl.bintray.com/sbt/native-packages/sbt/0.13.9/sbt-0.13.9.msi'
 Installing sbt...
 sbt has been installed.
 The install of sbt was successful.

Chocolatey installed 1/1 package(s). 0 package(s) failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

インストーラを実行していいか効かれるのでyesを選択

Chocolatey でsbtをインストールしたら64bitのPCなのに32bitをインストールしてきた

ちょっと不安になったのでやめた

環境変数の修正

Download - Rapid Environment Editor

scalaのREPL

activator shell
> console
scala>

これでscalaになじむための環境が整った?

文字化け

activatorシェルのhistoryをたどると文字化けする

  • ~/.activator/activatorconfig.txt
-Dinput.encoding=Cp1252

Intellij関連

activatorでプロジェクトを作って実際に走らせようとしてbuildなりrunなりをしようとするとエラーが

Error:Internal error: (java.net.SocketException) Socket is not connected: connect
java.net.SocketException: Socket is not connected: connect
    at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:244)
    at org.jetbrains.jps.incremental.scala.remote.RemoteResourceOwner$class.send(RemoteResourceOwner.scala:24)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer.send(RemoteServer.scala:12)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer.compile(RemoteServer.scala:17)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1$$anonfun$apply$1$$anonfun$apply$2.apply(ScalaBuilder.scala:47)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1$$anonfun$apply$1$$anonfun$apply$2.apply(ScalaBuilder.scala:41)
    at scala.util.Either$RightProjection.map(Either.scala:535)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1$$anonfun$apply$1.apply(ScalaBuilder.scala:41)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1$$anonfun$apply$1.apply(ScalaBuilder.scala:40)
    at scala.util.Either$RightProjection.flatMap(Either.scala:522)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1.apply(ScalaBuilder.scala:40)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$compile$1.apply(ScalaBuilder.scala:39)
    at scala.util.Either$RightProjection.flatMap(Either.scala:522)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$.compile(ScalaBuilder.scala:39)
    at org.jetbrains.jps.incremental.scala.IdeaIncrementalBuilder.build(IdeaIncrementalBuilder.scala:86)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1238)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:912)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:984)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:871)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:696)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:387)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:194)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:137)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:294)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:232)
    at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:44)
    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:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Please perform full project rebuild (Build | Rebuild Project)

調べた結果ファイアウォールの設定で解決できる模様

コントロールパネル -> システムとセキュリティ -> Windowsファイアウォールによるプログラムの許可

を追加します

f:id:swfz:20170831235036p:plain

ドメイン、ホーム、パブリック全てに対して許可をします

f:id:swfz:20170831235047p:plain

runさせてみます

無事起動できました

f:id:swfz:20170831235056p:plain