java - 尝试在 azure 模拟器上运行 Java/Eclipse 应用程序时出现路径太长错误

标签 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年微软仍然没有解决这个问题!

下面的问题似乎是相同的。但给出的答案没有帮助,我不知道如何重新关注原来的问题。

Azure Eclipse : cspack.exe: Error : The specified path, file name, or both are too long

作为对 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..

最佳答案

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

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

话虽如此,有一些方法可以让 Glassfish 通过 Eclipse 插件在 Windows Azure 模拟器中工作 - 我们一直在测试它,并在幕后实现了许多解决方法,以最大程度地减少用户运行的可能性进入其中。

因此,如果您仍然看到这个问题,我想知道您的 Glassfish 项目与我的 Glassfish 项目有什么不同,而我的 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 项目保存在更短的总路径长度下有帮助。

关于java - 尝试在 azure 模拟器上运行 Java/Eclipse 应用程序时出现路径太长错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546911/

相关文章:

java - 扑克牌经销商的无限循环

java - 如何指定 Log4J 2.x 配置位置?

java - 无法让 Logback Eclipse 插件显示输出

c# - 如何在 Eclipse for Java 中为 Web 服务创建 "proxy"类?

azure - 删除最后一个 Azure 应用服务也会删除父计划

java - 如何使用 Java SDK 从远程 Azure 应用程序配置检索服务总线队列的队列名称?

java - Java 8 编译器是否将接口(interface)上的静态方法优化为 "Final?"

java - CompletableFuture 链未调用 thenAcceptAsync

eclipse - Bluemix 中的空间和组织之间是什么关系?

python - Windows Azure API : Programmatically create VM