【问题标题】:package org.apache.commons does not exist包 org.apache.commons 不存在
【发布时间】:2013-12-30 17:44:02
【问题描述】:

我很想使用org.apache.commons.math3.distribution 中的EnumeratedIntegerDistribution() 来获得离散概率分布

int[] nums_to_generate          = new int[]    { -1,   1,    0  };
double[] discrete_probabilities = new double[] { 0.4, 0.4, 0.2  };

我正在使用 jdk7 ,在 Windows Xp 上,从命令行运行

我愿意:

  • 添加到我的源文件

    import org.apache.commons.math3; 
    
  • 下载 commons-math3-3.2 并将其解包到我当前的文件夹中
  • 使用类路径编译我的源代码:(或者)

    javac -cp ./commons-math3-3.2/commons-math3-3.2.jar:. ConflictsAnimation.java
    javac -cp   commons-math3-3.2/commons-math3-3.2.jar   ConflictsAnimation.java
    

我还有一个神秘的

    "error: package org.apache.commons does not exist"

谁知道会发生什么?我真的需要帮助。

注意:

编译(和运行)没有类路径和没有 导入“apache”并调用 numeratedIntegerDistribution()。

使用类路径编译并且不使用“appache” 无意义的错误。

非常感谢程序员们的高超技能!


这是一个简短的演示:

import java.lang.Math.*;
import org.apache.commons.math3;

public class CheckMe {

    public CheckMe() {

        System.out.println("let us check it out"); 
        System.out.println(generate_rand_distribution (10));
    }

    private static int[] generate_rand_distribution (int count){
    int[] nums_to_generate          = new int[]    { -1,   1,    0  };
        double[] discrete_probabilities = new double[] { 0.4, 0.4, 0.2  };
    int[] samples = null;

        EnumeratedIntegerDistribution distribution = 
        new EnumeratedIntegerDistribution(nums_to_generate, discrete_probabilities);

        samples = distribution.sample (count);

    return (samples);
    }   

    public static void main (String args[]) { 
        System.out.println("Main: ");
        CheckMe  animation = new CheckMe();  
    } 
}

【问题讨论】:

  • 这些“无意义的错误”到底是什么?您能否展示一个简短但完整的程序来说明问题?
  • 你不能只导入一个包,你需要导入实际的类。不过,您需要提供更多信息以寻求帮助,例如 jar 和您的类所在的位置等。
  • commons-math3-3.2 与我的源文件一起位于我的当前文件夹中。我正在添加一个有同样问题的短程序。
  • 如果它在您当前的文件夹中,那么为什么要给它一个 jar 文件的路径?

标签: java apache classpath javac


【解决方案1】:

这就是问题所在:

import org.apache.commons.math3;

这是试图导入一个 - 你不能这样做。您必须使用通配符导入:

import org.apache.commons.math3.*;

或导入特定类型:

import org.apache.commons.math3.SomeTypeHere;

在你的情况下,听起来你真的想要:

import org.apache.commons.math3.distribution.EnumeratedIntegerDistribution;

我尝试了一个带有 just 的示例类,该类导入和从 Apache 下载的 jar 文件,它工作正常。

【讨论】:

  • 嗨乔恩,编译是 fin,但是在运行时可能找不到这个 apache,这似乎导致类未找到异常。 stackoverflow.com/questions/20954322/… 谢谢你的一切。
  • @Galia:是的,根据那里的答案,您在运行时也需要类路径中的 jar 文件。
  • 是的,它解决了问题。但是以某种方式创建了另一个:如果我现在运行它们(不使用 apache),我的任何 java 可执行文件都会失败,并出现找不到主体类的错误。下界重启也不使用“。”因为 -cp 参数并没有改变这一点。可能与我现在拥有 Sdk 和 Jdk 的事实有关,尽管在使用 clathpass 标志运行之前,这对我的其他 java 可执行文件没有问题。
  • 如果问题是其他问题,请创建一个新问题。如果此答案回答了原始问号,则表示已接受。
猜你喜欢
  • 2011-11-12
  • 2020-09-15
  • 2011-07-05
  • 2013-04-04
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多