2014-03-14 50 views
0

我正在做一个名为可视语音识别的java项目。而IAM试图运行在日食靛蓝下面的代码..如何修复java.lang.VerifyError?

package main.java.edu.lipreading; 

import com.googlecode.javacpp.BytePointer; 
import com.googlecode.javacv.cpp.opencv_core; 
import main.java.edu.lipreading.vision.AbstractFeatureExtractor; 
import main.java.edu.lipreading.vision.NoMoreStickersFeatureExtractor; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.server.nio.SelectChannelConnector; 
import org.eclipse.jetty.websocket.WebSocket; 
import org.eclipse.jetty.websocket.WebSocketHandler; 

import javax.servlet.http.HttpServletRequest; 
import java.io.ByteArrayOutputStream; 
import java.util.List; 
import java.util.logging.Logger; 

import static com.googlecode.javacv.cpp.opencv_core.CV_8UC1; 
import static com.googlecode.javacv.cpp.opencv_core.cvMat; 
import static com.googlecode.javacv.cpp.opencv_highgui.cvDecodeImage; 

/** 
* Created with IntelliJ IDEA. 
* User: Sagi 
* Date: 25/04/13 
* Time: 21:47 
*/ 
public class WebFeatureExtractor extends Server { 

    private final static Logger LOG = Logger.getLogger(WebFeatureExtractor.class.getSimpleName()); 
    private final static AbstractFeatureExtractor fe = new NoMoreStickersFeatureExtractor(); 

    public WebFeatureExtractor(int port) { 
     SelectChannelConnector connector = new SelectChannelConnector(); 
     connector.setPort(port); 
     addConnector(connector); 

     WebSocketHandler wsHandler = new WebSocketHandler() { 
      public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) { 
       return new FeatureExtractorWebSocket(); 
      } 
     }; 
     setHandler(wsHandler); 
    } 

    /** 
    * Simple innerclass that is used to handle websocket connections. 
    * 
    * @author jos 
    */ 
    private static class FeatureExtractorWebSocket implements WebSocket, WebSocket.OnBinaryMessage, WebSocket.OnTextMessage { 

     private Connection connection; 


     public FeatureExtractorWebSocket() { 
      super(); 
     } 

     /** 
     * On open we set the connection locally, and enable 
     * binary support 
     */ 
     @Override 
     public void onOpen(Connection connection) { 
      LOG.info("got connection open"); 
      this.connection = connection; 
      this.connection.setMaxBinaryMessageSize(1024 * 512); 
     } 

     /** 
     * Cleanup if needed. Not used for this example 
     */ 
     @Override 
     public void onClose(int code, String message) { 
      LOG.info("got connection closed"); 
     } 

     /** 
     * When we receive a binary message we assume it is an image. We then run this 
     * image through our face detection algorithm and send back the response. 
     */ 
     @Override 
     public void onMessage(byte[] data, int offset, int length) { 
      //LOG.info("got data message"); 
      ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 
      bOut.write(data, offset, length); 
      try { 
       String result = convert(bOut.toByteArray()); 
       this.connection.sendMessage(result); 
      } catch (Exception e) { 
       LOG.severe("Error in facedetection, ignoring message:" + e.getMessage()); 
      } 
     } 

     @Override 
     public void onMessage(String data) { 
      LOG.info("got string message"); 
     } 
    } 
    public static String convert(byte[] imageData) throws Exception { 
     opencv_core.IplImage originalImage = cvDecodeImage(cvMat(1, imageData.length, CV_8UC1, new BytePointer(imageData))); 
     List<Integer> points = fe.getPoints(originalImage); 
     if(points == null) 
      return "null"; 
     String ans = ""; 
     for (Integer point : points) { 
      ans += point + ","; 
     } 
     return ans; 
    } 



    /** 
    * Start the server on port 999 
    */ 
    public static void main(String[] args) throws Exception { 
     WebFeatureExtractor server = new WebFeatureExtractor(9999); 
     server.start(); 
     server.join(); 
    } 
} 

我收到此错误..

Exception in thread "main" java.lang.VerifyError: class org.eclipse.jetty.server.nio.AbstractNIOConnector overrides final method newBuffer.(I)Lorg/eclipse/jetty/io/Buffer; 
    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 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.java.edu.lipreading.WebFeatureExtractor.<init>(WebFeatureExtractor.java:33) 
    at main.java.edu.lipreading.WebFeatureExtractor.main(WebFeatureExtractor.java:118) 

我得到了DIS代码https://github.com/sagioto/LipReading/blob/master/lipreading-core/src/main/java/edu/lipreading/WebFeatureExtractor.java .. 有人能帮助我PLZ ..

回答

1

如果您针对不同版本的库运行代码,则会发生java.lang.VerifyError。

查看github存储库,我看到这些文件的日期是2013年4月25日。显然,Jetty在过去10个月中收到了更新。找到该日期当前的Jetty版本,然后重试。