5

今天我开始编写一个使用 sqlite 的项目,当我尝试对其进行测试时,我收到了java.lang.ClassFormatError: Invalid pc in LineNumberTable。希望你能帮助我,因为我只是迷路了。我已经搜索过这个错误,并遇到了一些奇怪原因的奇怪解决方案。据我了解,它们都没有引起我的问​​题。

我正在使用“sqlitejdbc-v056”,它被插入到我的类路径中。

编辑:我的 JDK 版本是 1.7.0_03-b05

堆栈跟踪:

Exception in thread "main" java.lang.ClassFormatError: Invalid pc in LineNumberTable in     class file Controllers/FuncionariosController
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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 Main.main(Main.java:13)

给出错误的代码:

public class Main {

public static void main(String[] args) {  
    DatabaseController db=new DatabaseController();
    FuncionariosController f=new FuncionariosController(db);
        ...
     } 
}

类 FuncionarioController:

package Controllers;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Models.Funcionario;

public class FuncionariosController {
    private DatabaseController db;

    public FuncionariosController(DatabaseController db){
        this.db=db;
    }

    public void render(String cargo){
        ...
    }
    public List<Funcionario> selectAll(){
        ...
    }
    public Funcionario select(String login){
        ...
    }
}

提前致谢,

4

2 回答 2

1

我有一个类似的问题。发生它是由没有案例代码的开关引起的。发生错误时,它看起来像这样:

switch(e.getActionCommand()) {
        case ACTION_OPEN_PID:
            break;
        case ACTION_OPEN_PPID:
            break;
        default:
    }   

将简单的控制台输出添加到案例后,错误消失了。

switch(e.getActionCommand()) {
        case ACTION_OPEN_PID:
            System.out.println(ACTION_OPEN_PID);
            break;
        case ACTION_OPEN_PPID:
            System.out.println(ACTION_OPEN_PPID);
            break;
        default:
    }
于 2015-01-23T13:50:29.107 回答
0

感谢 Luiggi Mendoza,我使用 JDK 1.6 而不是 1.7 解决了这个问题。这成功了,但我不得不注释掉很多代码来编译它。不是很好的解决方案....

于 2012-06-20T14:41:50.323 回答