アプリを Heroku にデプロイする前にテストしようとしています。plugins.sbt に sbt 起動スクリプトを追加しました。
addSbtPlugin("com.typesafe.sbt" % "sbt-start-script" % "0.8.0")
そして、私は次のものを持っていますProcfile
:
web: Web をターゲット/開始 -Dhttp.port=$PORT
sbt タスクを実行すると、com.somepackage.mainclass の形式でプロジェクトの「メイン」クラスを指すstage
開始スクリプトが生成されます。target/start
ただし、実行するforeman start
と、すぐに次のように失敗します。
08:34:51 web.1 | スレッド「メイン」の例外 java.lang.NoClassDefFoundError: foo/launch/MainApp 08:34:51 web.1 | 原因: java.lang.ClassNotFoundException: foo.launch.MainApp 08:34:51 web.1 | java.net.URLClassLoader$1.run(URLClassLoader.java:202) 08:34:51 で web.1 | java.security.AccessController.doPrivileged (ネイティブ メソッド) 08:34:51 で web.1 | java.net.URLClassLoader.findClass (URLClassLoader.java:190) 08:34:51 で web.1 | java.lang.ClassLoader.loadClass (ClassLoader.java:306) 08:34:51 で web.1 | sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 08:34:51 web.1 で | java.lang.ClassLoader.loadClass (ClassLoader.java:247) 08:34:51 で web.1 | コード 1 08:34:51 システムで終了しました | SIGTERM をすべてのプロセスに送信する
sbt clean compile ステージを数回試しましたが、役に立たないようです。メインクラスを別のパッケージに移動したり、デフォルトのパッケージ、つまり src/main/scala に移動したりすることもできません。