Possible causes of “java.lang.ClassFormatError: Invalid pc in LineNumberTable”

半城伤御伤魂 提交于 2020-01-14 19:04:11

问题


Today I started coding a project that uses sqlite and when I tried to test it I received the java.lang.ClassFormatError: Invalid pc in LineNumberTable. Hope you can help me with it, because I'm just lost. I'v searched about this error, and came across some weird solutions to some weird causes. As I understand, none of them was causing my problem.

I'm using "sqlitejdbc-v056" wich is inserted in my classpath.

Edit: My JDK version is 1.7.0_03-b05

StackTrace:

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)

Code giving the error:

public class Main {

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

Class 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){
        ...
    }
}

Thanks in advance,


回答1:


I had a simmilar problem. It occured that it was caused by switch that haven't got cases code. While the error occured it looked somtheing like this:

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

After adding simple console output to the cases the error was gone.

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:
    }



回答2:


Thanks to Luiggi Mendoza I solved it by using JDK 1.6 instead of 1.7. That did the trick, but I had to comment out a lot of code to compile it. Not that good a solution....



来源:https://stackoverflow.com/questions/11111682/possible-causes-of-java-lang-classformaterror-invalid-pc-in-linenumbertable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!