windows-services - 在 Windows 上 Play Framework 2 阶段任务, "The input line is too long"

标签 windows-services playframework-2.0 windows-server-2012

我正在尝试使用“stage”任务在 Windows Server Server 2012 上 Play 2 应用程序,目的是将其包装在服务中,以便在服务器重新启动时应用程序将自动运行。但是,在运行该应用程序时,我收到以下消息:

The input line is too long.
The syntax of the command is incorrect.

这是因为 Windows 有一个 limit of around 8000命令行指令的字符,但似乎 Play 阶段命令通过将类路径作为参数传递来超出此范围。

将“stage”文件夹复制到 c:\可能会解决这个问题(因为它会减少类路径的大小),但我希望有一个更优雅的解决方案。

有没有人找到解决方法?或者,人们对在 Windows 上运行 Play 应用程序有什么建议,以便在服务器重新启动时它会自动运行。

谢谢。

最佳答案

更新:sbt native packager 现在提供了一些内置的解决方案,请参阅下面的 NieMaszNic 的答案。

这是一个已知问题,在 SBT native 打包程序(生成启动脚本)中进行跟踪:

https://github.com/sbt/sbt-native-packager/issues/72

我解决这个问题的建议是编写您自己的使用通配符类路径匹配器的启动批处理脚本。你可以把这个脚本放在dist您的 Play 项目中的目录,它将最终与您的应用程序打包在一起。该脚本可能如下所示:

java %1 -cp "./lib/*;" play.core.server.NettyServer .

请注意,如果您使用通配符类路径匹配器,则不能再依赖类路径排序与开发模式中的相同。无论如何,您不应该依赖类路径排序,但人们不可避免地会这样做。

关于windows-services - 在 Windows 上 Play Framework 2 阶段任务, "The input line is too long",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429234/

相关文章:

c# - 如何杀死自己的Windows服务

javascript - 创建了一个 Windows 服务来运行我的 Node 应用程序,但服务在启动几秒钟后停止运行

ruby - Play 中的 sass 插件!框架 2.0.4 抛出错误

mysql - 如何访问我新设置的 MySQL 数据库(获取 "Domain is currently unable to handle this request.")

c# - 如何从 Windows 服务将文件复制到网络位置?

windows-7 - Svchost : How to make it run only one module per instance of svchost. exe?如何获取扩展的进程信息?

sql - 玩Anorm和SQL连接

java - 搜索 Ebean @ManyToMany

asp.net - IIS8 - 在同一台服务器上托管 SSL 和非 SSL 站点

sql-server - 如何根据作业名称批量更新 SQL Server 代理作业重试尝试