如何在CloudFoundry花园容器中部署文件名大于242个字符的Scala应用程序 [英] How to deploy a Scala application with filenames larger than 242 characters in CloudFoundry garden container

查看:83
本文介绍了如何在CloudFoundry花园容器中部署文件名大于242个字符的Scala应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试将scala应用程序部署到带有sbt程序集的胖罐中。



容器和scala编译生成类存在一个众所周知的问题名称: https://github.com/milessabin/shapeless / wiki / Shapeless-with-SBT-Assembly-inside-Docker ,从本质上讲,它们不支持大于242个字符的文件名,并且如果包含这些字符,将无法启动scala应用程序。问题是几个库(scalaz,play)包含了这些库。

  scalacOptions in Assembly ++ = Seq(-Xmax-classfile- name, 73)

还尝试替换了用于启动的命令,现在正在寻找使用替代buildpack的方法,但是鉴于我什至没有使用start命令,这些方法似乎都无法解决问题。



我当前的结果是:

 ➜样本生成器git:(master)✗cf push sample-gen -p ./target/sample-generator -assembly-201608111441.jar -b java_buildpack --health-check-type = none -c sleep(100) 
以用户身份在组织pcfdev-org / space pcfdev-space中创建应用示例生成...
OK

使用路由sample-gen.local.pcfdev.io
将sample-gen.local.pcfdev.io绑定到sample-gen ...
OK

正在上传样本生成...
正在从以下位置上传应用程序文件:/ tmp / unzipped-app826671513
正在上传1.203亿,38143 fi les
完成上载
OK

以用户身份在组织中启动app sample-gen pcfdev-org / space pcfdev-space ...
正在下载java_buildpack ...
已下载java_buildpack
创建容器
成功创建了容器
正在下载应用程序包...

失败
重新启动应用程序时出错:StagingError

提示:有关详细信息,请使用'cf logs sample-gen --recent'命令

As cf日志并没有真正返回任何信息,我必须登录PCFDev并通过尾注/var/vcap/data/sys/log/garden/garden.stdout.log获取日志:

  { timestamp: 1470918381.941401958, source: garden-linux, message: garden-linux.garden-server.stream-in。失败,日志级别:2,数据:{目的地: / tmp / app,错误:错误流入:退出状态2。输出:tar:播放/核心/路由/ GeneratedRouter $ $ anonfun $ call $ 56 $$ anonfun $ apply $ 178 $$ anonfun $$$$$ 85f6e7f12408688f578bcac985aee12 $$$$ 186 $$ anonfun $ apply $ 187 $$ anon fun $ apply $ 188 $ anonfun $ apply $ 189 $ anonfun $ apply $ 190 $ anonfun $ apply $ 191 $ anonfun $ apply $ 192 $ anonfun $ apply $ 193.class:无法打开:文件名过长\ntar:播放/核心/路由/生成的路由器$$ anonfun $ call $ 59 $$ anonfun $ apply $ 197 $ anonfun $ apply $ 198 $$ anonfun $ apply $ 199 $ anonfun $ apply $ 200 $ anonfun $ apply $ 201 $$ anonfun $ apply $ 202 $$ anonfun $ apply $ 203 $$ anonfun $ apply $ 204 $ anonfun $ apply $ 205 $$ anonfun $ apply $ 206 $$ anonfun $ apply $ 207.class:无法打开:文件名太长\ntar:播放/核心/路由/ GeneratedRouter $$ anonfun $ call $ 47 $ anonfun $ apply $ 127 $ anonfun $ apply $ 128 $ anonfun $ apply $ 129 $$ anonfun $ apply $ 130 $ anonfun $ apply $ 131 $ anonfun $ apply $ 132 $$ anonfun $ apply $ 133 $$ anonfun $ apply $ 134 $$ anonfun $ apply $ 135 $$ anonfun $ apply $ 136 $$ anonfun $ apply $ 137.class:无法打开:文件名过长\ntar:播放/核心/路由/ GeneratedRouter $$ anonfun $ call $ 44 $$ anonfun $ apply $ 112 $$ anonfun $ apply $ 113 $$ ononfun $ apply $ 114 $$ anonfun $ apply $ 115 $ anonfun $ apply $ 116 $ anonfun $ apply $ 117 $ anonfun $ apply $ 118 $ anonfun $ apply $ 119 $$ anonfun $ apply $ 120 $$ anonfun $ ap ply $ 121 $$ anonfun $ apply $ 122.class:无法打开:文件名太长\ntar:播放/核心/路由/ GeneratedRouter $$ anonfun $ call $ 56 $ anonfun $ apply $ 178 $$ anonfun $ apply $ 179 $$ anonfun $ apply $ 180 $$ anonfun $ apply $ 181 $ anonfun $ apply $ 182 $ anonfun $ apply $ 183 $ anonfun $ apply $ 184 $ anonfun $ apply $ 185 $ anonfun $ apply $ 186 $ anonfun $ apply $ 187 $ anonfun $ apply $ 188.class:无法打开:文件名太长\ntar:播放/核心/路由/ GeneratedRouter $$ anonfun $ call $ 59 $$ anonfun $ apply $ 197 $$ anonfun $$$$$ 4d23ff5fc3821e643c952318318248bfc6 $$$$ 205 $$$ anonfun $ apply $ 206 $ anonfun $ apply $ 207 $ anonfun $ apply $ 208 $ anonfun $ apply $ 209 $ anonfun $ apply $ 210 $ anonfun $ apply $ 211 $ anonfun $ apply $ 212.class:无法打开:文件名太长tarntar:播放/核心/路由/生成的路由器$$ anonfun $ call $ 53 $$ anonfun $ apply $ 160 $ anonfun $ apply $ 161 $ anonfun $ apply $ 162 $ anonfun $ apply $ 163 $$ anonfun $ apply $ 164 $ anonfun $ apply $ 165 $$ anonfun $ apply $ 166 $ anonfun $ apply $ 167 $ anonfun $ apply $ 168 $$ anonfun $ apply $ 169 $$ anonfun $ apply $ 170.class:无法打开:文件名过长\ntar:播放/核心/ rou ting / GeneratedRouter $$ anonfun $ call $ 41 $$ anonfun $ apply $ 98 $ anonfun $ apply $ 99 $$ anonfun $ apply $ 100 $ anonfun $ apply $ 101 $ anonfun $ apply $ 102 $ anonfun $ apply $ 103 $$ anonfun $ apply $ 104 $$ anonfun $ apply $ 105 $$ anonfun $ apply $ 106 $ anonfun $ apply $ 107 $$ anonfun $ apply $ 108.class:无法打开:文件名太长\ntar:播放/核心/路由/ GeneratedRouter $$ anonfun $通话$ 47 $$ anonfun $ apply $ 127 $ anonfun $$$$ a8626ce150a144689738daf9754d5e7 $$$$$ 135 $$ anonfun $ apply $ 136 $ anonfun $ apply $ 137 $$ anonfun $ apply $ 138 $$ anonfun $ apply $ 139 $$ ononf apply $ 140 $$ anonfun $ apply $ 141 $$ anonfun $ apply $ 142.class:无法打开:文件名太长\ntar:播放/核心/路由/ GenerateRouter $$ anonfun $ call $ 50 $$ anonfun $ apply $ 143 $$ anonfun $ apply $ 144 $$ anonfun $ apply $ 145 $$ anonfun $ apply $ 146 $ anonfun $ apply $ 147 $ anonfun $ apply $ 148 $ anonfun $ apply $ 149 $ anonfun $ apply $ 150 $ anonfun $ apply $ 151 $ anonfun $ apply $ 152 $$ anonfun $ apply $ 153.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ Applicat iveBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 70.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ 6ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ App $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ tupled $ 11.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder6 ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 67.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 66.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $$ ApplicativeBuilder8 $ ApplicativeBuilder8 $ 11 anonfun $ apply $ 73.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $$ ApplicativeBuilder9 $ ApplicativeBuilder10 $$ ApplicativeBuilder9 $ ApplicativeBuilder10 $$ ApplicativeBuilder9 $ ApplicativeBuilder10 $$ ApplicativeBuilder11 $ ApplicativeBuilder10 $ AppliativeBuilder11 $ ApplicativeBuilder10 $ ApplyativeBuilder11 $类:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $$ Applyonfunk:文件名太长\ntar: scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply / taxon太长/应纳税额:71美元:类: $ ApplicativeBuilder3 $ ApplicativeBuilder4 $ ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 74.class:不能打开:文件名太长/ yntax $ App4 $ 3 ApplicativeBuilder5 $ ApplicativeBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 75.class:无法打开:文件名太长\ntar:scalaz / syntax / ApplicativeBuilder $ App4 tiveBuilder6 $ ApplicativeBuilder7 $ ApplicativeBuilder8 $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 72.class:无法打开:文件名过长\ntar:scalaz / syntax / ApplicativeBuilder $ ApplicativeBuilder3 $ 6ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ ApplicativeBuilder3 $ App $ ApplicativeBuilder9 $ ApplicativeBuilder10 $ ApplicativeBuilder11 $ ApplicativeBuilder12 $$ anonfun $ apply $ 77.class:无法打开:文件名过长ApplicativeBuilder11 $ ApplicativeBuilder12 $ anonfun $ apply $ 69.class:无法打开:文件名太长\ntar:由于先前的错误而以失败状态退出Exitn, handle: a1ef2606-ead0-4cb1-b0fd-d464d64b8bc6 -ff54adf06a8342f59eedfb022a9e9527,会话: 11.7615,用户: vcap}} 


解决方案

以防万一这仍然可以帮助任何人,我们设法使用了sbt-native-packager而不是sbt-assembly解决方案。



使用sbt-native-packager和Universal:packageBin命令可以生成一个zip,其中包含与sbt阶段生成的内容相同的内容。罐子分开存放(未爆炸),避免了sbt-assembly引起的文件大小所引起的编译问题。之后,java_buildpack能够运行应用程序而不会出现问题:

  cf push sample-app -p ./target/universal/ stage -b java_buildpack --health-check-type = none 

  cf push sample-app -p ./target/universal/sample-app-201608160251.zip -b java_buildpack --health-check-type = none 


I've been trying to deploy a scala application built into a fat-jar with sbt assembly.

There is well known issue with containers and scala compilation generated class names: https://github.com/milessabin/shapeless/wiki/Shapeless-with-SBT-Assembly-inside-Docker, essentially they don't support file names larger than ~242 chars and will fail miserably to start scala application if they do contain those. Problem is several libraries (scalaz, play) contain those.

scalacOptions in assembly ++= Seq("-Xmax-classfile-name", "73")

Also tried replacing the command used to start and right now I'm looking into using alternative buildpacks, but none of these seem to be able to fix the issue, given that I don't even get to the start command.

My current results are:

➜  sample-generator git:(master) ✗ cf push sample-gen -p ./target/sample-generator-assembly-201608111441.jar -b java_buildpack  --health-check-type=none -c "sleep(100)"                                          
Creating app sample-gen in org pcfdev-org / space pcfdev-space as user...
OK

Using route sample-gen.local.pcfdev.io
Binding sample-gen.local.pcfdev.io to sample-gen...
OK

Uploading sample-gen...
Uploading app files from: /tmp/unzipped-app826671513
Uploading 120.3M, 38143 files
Done uploading               
OK

Starting app sample-gen in org pcfdev-org / space pcfdev-space as user...
Downloading java_buildpack...
Downloaded java_buildpack
Creating container
Successfully created container
Downloading app package...

FAILED
Error restarting application: StagingError

TIP: use 'cf logs sample-gen --recent' for more information

As cf logs doesn't really return me anything, I have to log into PCFDev and get logs by tailing /var/vcap/data/sys/log/garden/garden.stdout.log:

{"timestamp":"1470918381.941401958","source":"garden-linux","message":"garden-linux.garden-server.stream-in.failed","log_level":2,"data":{"destination":"/tmp/app","error":"error streaming in: exit status 2. Output: tar: play/core/routing/GeneratedRouter$$anonfun$call$56$$anonfun$apply$178$$anonfun$$$$$85f6e7f12408688f578bcac985aee12$$$$$186$$anonfun$apply$187$$anonfun$apply$188$$anonfun$apply$189$$anonfun$apply$190$$anonfun$apply$191$$anonfun$apply$192$$anonfun$apply$193.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$59$$anonfun$apply$197$$anonfun$apply$198$$anonfun$apply$199$$anonfun$apply$200$$anonfun$apply$201$$anonfun$apply$202$$anonfun$apply$203$$anonfun$apply$204$$anonfun$apply$205$$anonfun$apply$206$$anonfun$apply$207.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$47$$anonfun$apply$127$$anonfun$apply$128$$anonfun$apply$129$$anonfun$apply$130$$anonfun$apply$131$$anonfun$apply$132$$anonfun$apply$133$$anonfun$apply$134$$anonfun$apply$135$$anonfun$apply$136$$anonfun$apply$137.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$44$$anonfun$apply$112$$anonfun$apply$113$$anonfun$apply$114$$anonfun$apply$115$$anonfun$apply$116$$anonfun$apply$117$$anonfun$apply$118$$anonfun$apply$119$$anonfun$apply$120$$anonfun$apply$121$$anonfun$apply$122.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$56$$anonfun$apply$178$$anonfun$apply$179$$anonfun$apply$180$$anonfun$apply$181$$anonfun$apply$182$$anonfun$apply$183$$anonfun$apply$184$$anonfun$apply$185$$anonfun$apply$186$$anonfun$apply$187$$anonfun$apply$188.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$59$$anonfun$apply$197$$anonfun$$$$$4d23ff5fc3821e643c952318248bfc6$$$$$205$$anonfun$apply$206$$anonfun$apply$207$$anonfun$apply$208$$anonfun$apply$209$$anonfun$apply$210$$anonfun$apply$211$$anonfun$apply$212.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$53$$anonfun$apply$160$$anonfun$apply$161$$anonfun$apply$162$$anonfun$apply$163$$anonfun$apply$164$$anonfun$apply$165$$anonfun$apply$166$$anonfun$apply$167$$anonfun$apply$168$$anonfun$apply$169$$anonfun$apply$170.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$41$$anonfun$apply$98$$anonfun$apply$99$$anonfun$apply$100$$anonfun$apply$101$$anonfun$apply$102$$anonfun$apply$103$$anonfun$apply$104$$anonfun$apply$105$$anonfun$apply$106$$anonfun$apply$107$$anonfun$apply$108.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$47$$anonfun$apply$127$$anonfun$$$$$a8626ce150a144689738daf9754d5e7$$$$$135$$anonfun$apply$136$$anonfun$apply$137$$anonfun$apply$138$$anonfun$apply$139$$anonfun$apply$140$$anonfun$apply$141$$anonfun$apply$142.class: Cannot open: File name too long\ntar: play/core/routing/GeneratedRouter$$anonfun$call$50$$anonfun$apply$143$$anonfun$apply$144$$anonfun$apply$145$$anonfun$apply$146$$anonfun$apply$147$$anonfun$apply$148$$anonfun$apply$149$$anonfun$apply$150$$anonfun$apply$151$$anonfun$apply$152$$anonfun$apply$153.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$70.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$tupled$11.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$67.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$66.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$73.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$68.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$76.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$71.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$74.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$75.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$72.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$77.class: Cannot open: File name too long\ntar: scalaz/syntax/ApplicativeBuilder$ApplicativeBuilder3$ApplicativeBuilder4$ApplicativeBuilder5$ApplicativeBuilder6$ApplicativeBuilder7$ApplicativeBuilder8$ApplicativeBuilder9$ApplicativeBuilder10$ApplicativeBuilder11$ApplicativeBuilder12$$anonfun$apply$69.class: Cannot open: File name too long\ntar: Exiting with failure status due to previous errors\n","handle":"a1ef2606-ead0-4cb1-b0fd-d464d64b8bc6-ff54adf06a8342f59eedfb022a9e9527","session":"11.7615","user":"vcap"}}

解决方案

Just in case this might still help anyone, we've managed to use a solution with sbt-native-packager instead of sbt-assembly.

Using sbt-native-packager and the universal:packageBin command a zip can be produced, containing the same contents produced by sbt stage. The jars are kept separate (not-exploded) and avoid the compilation problem generated by the size of files caused by sbt-assembly. After that the java_buildpack is capable of running the app without issues:

cf push sample-app -p ./target/universal/stage -b java_buildpack --health-check-type=none

or

cf push sample-app -p ./target/universal/sample-app-201608160251.zip -b java_buildpack --health-check-type=none

这篇关于如何在CloudFoundry花园容器中部署文件名大于242个字符的Scala应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆