BigInteger抛出NoClassDefFoundError

时间:2014-04-02 15:55:58

标签: java noclassdeffounderror biginteger

我试图解决代码高尔夫问题,但我遇到了一个意想不到的问题。看起来Java的BigInteger类正在抛出一个NoClassDefFoundError。这是我的代码 -

import java.math.BigInteger;

public class UnGolfed {
    int sum=0;
    BigInteger num = new BigInteger("0");
    int left;
    UnGolfed(int i){
        left=i;
    }
    public static void main(String[] args) {

        (new UnGolfed(Integer.parseInt("1"))).doIt();
    }

    void doIt() {
        for(int i=left;i>0;i--){
            sum+=getNextHappy(num=num.nextProbablePrime());
        }
        System.out.print(sum);  
    }

    int getNextHappy(BigInteger b) {
        try{
            String s = b.toString();
            int tSum=0;
            for(char c : s.toCharArray()){
                tSum+=(c-48)*(c-48);
            }
            if(tSum==1) return num.intValue();
            return getNextHappy(new BigInteger(tSum+""));
        }
        catch(StackOverflowError e){
            return getNextHappy(num=num.nextProbablePrime());
        }       
    }
}

如果您对代码高尔夫挑战感到好奇,可以找到前N个幸福素数的总和。当我运行它虽然我得到以下 -

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class java.security.SecureRandom
    at java.math.BigInteger.getSecureRandom(BigInteger.java:875)
    at java.math.BigInteger.passesMillerRabin(BigInteger.java:898)
    at java.math.BigInteger.primeToCertainty(BigInteger.java:739)
    at java.math.BigInteger.nextProbablePrime(BigInteger.java:690)
    at UnGolfed.getNextHappy(UnGolfed.java:33)
    at UnGolfed.getNextHappy(UnGolfed.java:30)
    at UnGolfed.getNextHappy(UnGolfed.java:30)
    .....
    .....
    .....

注意:我知道这段代码有很多问题(可能会遇到无限循环并导致堆栈溢出错误等)。请忽略这些,我可以稍后解决。我只是想知道为什么这个NoClassDefFoundError即将出现

0 个答案:

没有答案