- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要这个简单的虚拟银行程序在每次启动时反序列化主帐户。我已经这样做了,但是运行此方法的 GUI 类继续给我一个 java.lang.ClassNotFoundException
。我不确定我的错误是什么或如何修复它,我应该做什么?我将在下面发布这两个类,因为我不确定在哪里可以找到错误。
BankGUI 类:
package GUIs;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import virtualBank3.BankAccount;
@SuppressWarnings("serial")
public class BankGUI implements Serializable {
BankAccount account;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
BankGUI gui = new BankGUI();
gui.deserializeAccount();
gui.displayGUI();
}
// all global components for JFrame
JTextArea statusArea;
JCheckBox isLockedCheckBox;
JList depositAmount;
JList withdrawAmount;
JButton depositButton;
JButton withdrawButton;
JButton saveAccountButton;
private void displayGUI() {
JFrame frame = new JFrame("Virtual Bank v3.3");
Integer[] intList = { 1, 2, 5, 10, 20, 50, 100, 150, 250, 500 };
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
rightPanel.setBackground(Color.GREEN);
JPanel centerPanel = new JPanel();
centerPanel.setBackground(Color.GREEN);
centerPanel.setLayout(new GridBagLayout());
frame.add(BorderLayout.CENTER, centerPanel);
frame.add(BorderLayout.EAST, rightPanel);
// add some JLabel's
JLabel depositAmountLabel = new JLabel("Deposit Amount:");
JLabel withdrawAmountLabel = new JLabel("Withdraw Amount:");
JLabel isLockedLabel = new JLabel("Lock account(True/False)");
// finish components(center panel)
statusArea = new JTextArea(15, 22);
statusArea.setEditable(false);
// add this to panel
isLockedCheckBox = new JCheckBox();
// add this to panel
// scrollers and Jlists
//***********************************************************************
depositAmount = new JList(intList);
JScrollPane scroller1 = new JScrollPane(depositAmount);
scroller1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
depositAmount.setVisibleRowCount(1);
depositAmount.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
withdrawAmount = new JList(intList);
JScrollPane scroller2 = new JScrollPane(depositAmount);
scroller2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
depositAmount.setVisibleRowCount(1);
depositAmount.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//***********************************************************************
depositButton = new JButton("Deposit Amount.");
withdrawButton = new JButton("Withdraw Amount");
saveAccountButton = new JButton("Save your Account");
frame.setSize(425, 650);
frame.setVisible(true);
}
private void serializeAccount() {
try {
ObjectOutputStream objectStream1 = new ObjectOutputStream(
new FileOutputStream("bankAccounts.txt"));
objectStream1.writeObject(account);
objectStream1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void deserializeAccount() {
try {
ObjectInputStream objectStream2 = new ObjectInputStream(
new FileInputStream("bankAccounts.txt"));
account = (BankAccount) objectStream2.readObject();
objectStream2.close();
//test it
System.out.println("It worked.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
银行账户类:
package virtualBank3;
import java.io.Serializable;
public class BankAccount implements Serializable {
private static final long serialVersionUID = -5341449653011848470L;
int balance = 0;
int userWallet = 0;
String owner = "Hello, world";
String accountStat = "Account Owner: " + owner + "\nAccount balance: $"
+ balance + "\nOwner Wallet Balance: $" + userWallet;
Boolean isLocked = false;
public int withdraw(int amount) {
balance -= amount;
userWallet += amount;
return userWallet;
}
public int deposit(int amount) {
balance += amount;
userWallet -= amount;
return balance;
}
public int depositCashIntoWallet(int amount) {
userWallet += amount;
return userWallet;
}
}
错误如下:
java.lang.ClassNotFoundException: virtualBank3.Account
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.io.ObjectInputStream.resolveClass(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at GUIs.BankGUI.deserializeAccount(BankGUI.java:123)
at GUIs.BankGUI.main(BankGUI.java:40)
最佳答案
这是一个命名问题 - 您有一个公共(public)类 virtualBank3.BankAccount
,但序列化文件引用了一个virtualBank3.Account
。序列化文件是你写的还是别人给你的?如果是前者,您重命名了一个类,但没有重新创建序列化文件。
关于java - 为什么这个程序会出现 ClassNotFound 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297064/
我有一个包含 10 个外部模块的大项目。显然我已经启用了 multidex,因为方法的总数超过了 100k。 现在,如果我在项目中添加“facebook-android”依赖项,当我启动我的应用程序时
ClassNotFound(是的,我知道,有很多关于此异常的帖子;我在这里和其他地方搜索过,但找不到解释) 为什么 Class.forName 会失败? groovy> class Foo { gro
我的 Web 应用程序是使用两个项目构建的,其中一个项目包含 api 和第二个 Web 部件。在 Eclipse 中,我可以在 project-web 中使用 project-api 中的类,但是在部
我正在尝试从 GitHub 运行 Java 项目,但遇到了奇怪的异常。 以下是受影响的代码部分: package de.fau.cs.osr.hddiff.perfsuite; import de.f
我正在尝试将文件中的一些信息读取到某些对象中。 Main 方法只是将信息读入一些字符串变量,然后使用这些字符串来初始化对象。很简单。这些对象使用 BST 存储。 但是,我收到的错误是ClassNotF
当我从命令提示符运行 java 程序时,该程序不会因为 ClassNotFound 错误而无法运行。但我看到的类存在于类路径上的 jar 文件中。当我从 Eclipse 运行时,同样的程序可以工作。不
我有一个小程序和几个 .sh 文件来执行它。我使用 Raspberry-pi 虚拟盒子模拟器来运行它。 (不要问为什么......只是需要它.. :))所以,我的 .sh 文件看起来像: export
我正在努力尝试在 Scala 中设置远程参与者。我正在运行 Scala 2.10.2 和 Akka 2.2.1。 我使用 [为了清楚起见,我缩短了类路径 arg 上的路径] 进行编译: $ scala
我尝试将 RecyclerView 和 CardView 添加到我的项目中 dependencies { compile 'com.android.support:appcompat-v7:21.0.
经过很长时间,对我的代码进行了一些调试和重构,我想重新运行一些测试。我遇到的问题是我总是收到以下错误: "C:\Program Files\Android\Android Studio\jre\bin
我正在学习 Java 并正在阅读这本书:https://www.fca.pt/cgi-bin/fca_main.cgi/?op=2&isbn=978-972-722-791-4 . 在本书中,我有一个
我有麻烦了!我正在尝试通过 IntelliJ IDEA 11 在 JBoss AS 7.1.1.Final 上部署我的应用程序,在部署过程中出现以下异常: 12:23:42,566 ERROR [or
我决定编写 RMI(来自书中),代码也来自书中。我用 rmic 创建了 Stub,并启动了 rmiregistry,但是当我决定编写 java Start Server 时,我遇到了问题,实际上这是我
错误: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class com.Stuff
所以我想我对 memcached 的工作原理有点困惑。我正在使用不同的框架开发相同的API,所有这些框架都包含memcached(java版本的spymemcached)。当我在第一个框架上设置 me
我正在学习 Java 并正在阅读这本书:https://www.fca.pt/cgi-bin/fca_main.cgi/?op=2&isbn=978-972-722-791-4 . 在本书中,我有一个
我正在 spring mvc 中启动一个新项目,当我尝试运行 hello world 时,它抛出错误: 这是我的dispatcher-servlet.xml 映射:
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我正在尝试在 hadoop 上启动一个字数统计图 reduce。当我要求 hadoop 完成这项工作时,它返回以下内容: Exception in thread "main" java.lang.Cl
我正在尝试在 HashMap 中创建一个通用值类型,如下所示: val aMap = ArrayBuffer[HashMap[String, Any]]() aMap += HashMap() aMa
我是一名优秀的程序员,十分优秀!