5

今日、私はsqliteを使用するプロジェクトのコーディングを開始し、それをテストしようとすると、java.lang.ClassFormatError:LineNumberTableの無効なPCを受け取りました。私は迷子になっているので、あなたがそれを手伝ってくれることを願っています。私はこのエラーについて検索し、いくつかの奇妙な原因に対するいくつかの奇妙な解決策に出くわしました。私が理解しているように、それらのどれも私の問題を引き起こしていませんでした。

クラスパスに挿入されている「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.7 の代わりに JDK 1.6 を使用して解決しました。これで問題は解決しましたが、コンパイルするには多くのコードをコメントアウトする必要がありました。あまり良い解決策ではありません....

于 2012-06-20T14:41:50.323 に答える