尝试在azure仿真器上运行Java / Eclipse应用程序时路径太长错误

时间:2013-03-21 11:58:37

标签: java eclipse azure

我有一个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: Error : The specified path, file name, or both are too long

作为Martin Sawicki评论的回应,这是日志。正如你所看到的,我正在使用的路径很短。我甚至试图替换,并使用另一个驱动器的项目,但然后插件炸弹与nullpointer异常。

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..

2 个答案:

答案 0 :(得分: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)然后我点击模拟器中的Run,一切正常。

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

答案 1 :(得分:1)

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

我正在运行Glassfish Server Open Source Edition 3.0.1并遇到了同样的问题。我首先想到的是版本问题,但在下载了同一版本的vanilla副本后,我能够重新打包并部署到Azure模拟器,没问题。