【问题标题】:Getting a java.lang.NoClassDefFoundError in Linux platform and not Windows在 Linux 平台而非 Windows 中获取 java.lang.NoClassDefFoundError
【发布时间】:2016-12-27 14:57:17
【问题描述】:

我有一个使用 Microsoft azure Storage 的 Java 程序。在 Windows 平台上运行时没有报错,但在 Linux 平台上运行时出现以下错误。

Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.storage.core.Utility

有人知道任何可能的解释吗?

【问题讨论】:

  • 你是如何在 Linux 上安装依赖的?通过行家?
  • 程序是在windows平台上编译构建的..maven是用来构建的......它可以在Linux或windows平台上运行。我不必在 Linux 上单独安装依赖项,因为我只是在运行编译代码,其中包含构建期间的依赖项
  • @Aparna 是否为 Linux 上的 Maven 配置了 M2_HOME 环境变量,并将其添加到 $PATH 中?

标签: azure-storage azure-blob-storage


【解决方案1】:

使用 Maven 在 Linux 上运行 Java 程序似乎是一个常见问题。

当命令mvn -v或进行其他操作时,会出现如下问题。

线程“main”中的异常 java.lang.NoClassDefFoundError: xxxxxxxxx
引起:java.lang.ClassNotFoundException: xxxxxxxxxxx

通常,这种情况有以下两个原因。

  1. 无法在文件中配置环境变量M2_HOME。请尝试通过以下命令进行设置。

    export M2_HOME=<the maven installed path> # for example, /opt/apache_maven/
    export PATH=$PATH:$M2_HOME/bin
    
  2. 当前用户无权访问某些文件或目录,因为从Windows上传的文件或目录缺少linux文件系统权限信息。所以请尝试通过以下命令更改文件或目录的权限。

    chmod -R 660 <the maven project name> # Sometimes, try to use 777. 
    

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 2014-10-25
    • 2016-03-29
    • 2015-05-30
    相关资源
    最近更新 更多