1

我有一个 Java Web 应用程序,我尝试使用 Eclipse 以及 Azure SDK 和 Eclipse 插件在 Azure 上部署它。现在,当我尝试在 Azure 模拟器中运行应用程序时。我收到以下可怕的错误:

[windowsazurepackage] cspack.exe: Error : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

我正在使用 Glassfish 3 和 Java 1.7 JDK。我已经尝试替换文件夹,所以它尽可能短。但似乎没有任何帮助。看起来 Glassfish 或 Java SDK 导致文件夹太深。我很惊讶在 2013 年 MS 仍然没有解决这个问题!

下面的问题似乎是一样的。但是给定的答案没有帮助,我不知道如何重新关注原始问题。

Azure Eclipse:cspack.exe:错误:指定的路径、文件名或两者都太长

作为对 Martin Sawicki 评论的回应,这是日志。正如你所看到的,我使用的路径非常短。我什至尝试替换,并为项目使用另一个驱动器,但随后插件因空指针异常而爆炸。

Buildfile: C:\A\azr\package.xml

checkResetScript:

resetEmulator:

createwapackage:
    [move] Warning: Could not find file C:\A\azr\dy to copy.
    [mkdir] Created dir: C:\A\azr\dy
[windowsazurepackage] Verified attributes.
[windowsazurepackage] Role "wrol1": Verifying the approot "C:\A\azr\wrol1\approot"
[windowsazurepackage] Role "wrol1": Importing components...
[windowsazurepackage]   Imported as 'jdk1.7.0_17' from "C:\Program             Files\Java\jdk1.7.0_17"
[windowsazurepackage]   Imported as 'glassfishv3' from "C:\Glassfish3\glassfishv3"
[windowsazurepackage]   Imported as 'OW-MobileClient-QNH.war' from "C:\A\azr\..\OW-MobileClient-QNH"
[windowsazurepackage] Role "wrol1": Finished importing components
[windowsazurepackage] Role "wrol1": Generating component deployment script...
[windowsazurepackage] Role "wrol1": Created internal startup script
[windowsazurepackage] Starting package generation...
[windowsazurepackage] Executing '"C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\bin\cspack.exe" "C:\A\azr\ServiceDefinition.csdef" /role:wrol1;"C:\A\azr\wrol1\approot" /out:"C:\A\azr\dy\WindowsAzurePackage.cspkg"'...
[windowsazurepackage] Process started
[windowsazurepackage] Windows(R) Azure(TM) Packaging Tool version 1.8.0.0
[windowsazurepackage] for Microsoft(R) .NET Framework 3.5
[windowsazurepackage] Copyright (c) Microsoft Corporation. All rights reserved.
[windowsazurepackage] C:\A\azr\ServiceDefinition.csdef: Warning  CloudServices040 : The 'schemaVersion' attribute is unspecified. Please set the attribute to avoid this warning.
[windowsazurepackage] cspack.exe: Error   : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
[windowsazurepackage] Waiting for process to exit..
4

2 回答 2

1

由于您已经部署的应用程序,它可能是 glassfish\domains\domain(X)... 中文件夹结构的深度。

我正在运行 Glassfish Server Open Source Edition 3.0.1 并遇到了同样的问题。我最初认为这是一个版本控制问题,但在下载了同一版本的香草副本后,我能够重新打包并部署到 Azure 模拟器,没问题。

于 2013-07-03T19:51:15.177 回答
1

不幸的是,正如您所怀疑的那样,您在 Windows 中遇到了那个古老的路径长度限制。

有趣的是,如果你要将它部署到云中,它实际上可能工作正常,尽管它不能在模拟器中工作。那是因为它是云,您的 approot 目录(默认情况下放置有效负载的位置)只是 e:\approot。但是在您的本地计算机上,您的 Eclipse 项目可能位于多个目录中,然后是 Azure SDK 为您的模拟器部署创建的多个目录,然后 Glassfish 文件夹结构和文件名也很深,因此很容易命中其中的一个文件,其有效路径太长(> 260 个字符)。

话虽如此,有一些方法可以让 Glassfish 从 Eclipse 插件在 Windows Azure 模拟器中工作 - 这是我们一直在测试的东西,并且已经在后台实施了许多变通方法,以最大限度地减少用户遇到它的可能性。

因此,如果您仍然看到这个问题,我想知道您的 Glassfish 项目与我的有什么不同,我没有遇到这个问题。这就是我正在做的事情:

a) 我的 Eclipse 工作区中有一个 Windows Azure 部署项目,我的项目的有效路径是:c:\abcde\fghi\MyAzureProject(长度很重要)

b) 当我创建这个项目时,在项目向导中的服务器选项卡上,我选择了解压的 glassfish 安装,它位于:C:\abcde\fghijklmopqr\glassfish3。(通过这种方式,我依赖于 Eclipse 插件关于如何安装 glassfish 的知识)

c)然后我只需在模拟器中单击运行,一切正常。

如果您的操作完全相同,但 Eclipse 的项目路径比我的长(c:\abcde\fghi\MyAzureProject --- 27 个字符),那么看看是否将 Eclipse 项目保存在较短的总路径长度下是否有帮助。

于 2013-03-21T20:18:39.013 回答