This question already has answers here:
Is the current path `.` in the classpath by default?
(4个答案)
2年前关闭。
我搜索了这个问题,但找不到解决方案。
我正在运行为流行的KataPokerHands挑战创建的解决方案。我有两个类别
这是cardeck类:
这是经销商类:
这是运行程序Pokergame.java的类:
这是错误消息:
线程“主”中的异常java.lang.NoClassDefFoundError:CardDeck
在Dealer。(Dealer.java:14)在PokerGame.main(PokerGame.java:9)
造成原因:java.lang.ClassNotFoundException:CardDeck位于
java.net.URLClassLoader.findClass(URLClassLoader.java:382)在
java.lang.ClassLoader.loadClass(ClassLoader.java:424)在
sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349)在
java.lang.ClassLoader.loadClass(ClassLoader.java:357)...还有2个
然后使用以下命令运行
(4个答案)
2年前关闭。
我搜索了这个问题,但找不到解决方案。
我正在运行为流行的KataPokerHands挑战创建的解决方案。我有两个类别
CardDeck
和Dealer
,发牌人使用纸牌。当我运行程序时,出现一条错误消息,表明JVM无法找到由Dealer类调用的CardDeck
类,即使这两个类都位于同一目录中。这是cardeck类:
import java.util.ArrayList;
import java.util.Arrays;
public class CardDeck
{
private final ArrayList<String> deck;
CardDeck()
{
deck = new ArrayList<>();
for(int i = 2; i < 10; i++)
{
deck.add(i + "H");
deck.add(i + "D");
deck.add(i + "S");
deck.add(i + "C");
}
deck.addAll(Arrays.asList("TH TD TS TC JH JD JS JC QH QD QS QC KH KD KS KC AH AD AS AC".split(" ")));
}
ArrayList<String> getDeck()
{
return deck;
}
}
这是经销商类:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Dealer
{
int deckSize;
ArrayList<String> newDeck;
Random rand;
Dealer()
{
deckSize = 52;
newDeck = new CardDeck().getDeck();
Collections.shuffle(newDeck);
rand = new Random(42);
}
ArrayList dealHand()
{
ArrayList<String> myHand = new ArrayList<>();
int cardIndex;
for(int i = 0; i < 5; i++, deckSize--)
{
cardIndex = rand.nextInt(deckSize);
myHand.add(newDeck.get(cardIndex));
newDeck.remove(cardIndex);// remove the card picked from the deck
}
return myHand;
}
}
这是运行程序Pokergame.java的类:
import java.util.*;
public class PokerGame
{
public static void main(String[] args)
{
Dealer dealer = new Dealer();
ArrayList<String> PlayerOneHand = dealer.dealHand();
ArrayList<String> PlayerTwoHand = dealer.dealHand();
System.out.println("Player One's cards: " + PlayerOneHand);
System.out.println("Player Two's cards: " + PlayerTwoHand);
System.out.println();
CompareHands hands = new CompareHands(PlayerOneHand, PlayerTwoHand);
hands.compareHands(PlayerOneHand, PlayerTwoHand);
}
}
这是错误消息:
线程“主”中的异常java.lang.NoClassDefFoundError:CardDeck
在Dealer。(Dealer.java:14)在PokerGame.main(PokerGame.java:9)
造成原因:java.lang.ClassNotFoundException:CardDeck位于
java.net.URLClassLoader.findClass(URLClassLoader.java:382)在
java.lang.ClassLoader.loadClass(ClassLoader.java:424)在
sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349)在
java.lang.ClassLoader.loadClass(ClassLoader.java:357)...还有2个
最佳答案
您很可能没有编译CardDeck
类,因此它不在java
运行时类路径中。假设您正在使用javac
命令手动执行此操作,则可以使用以下命令重新编译当前目录中的所有源文件:
javac *.java
然后使用以下命令运行
PokerGame.main()
:java PokerGame