2014-04-01 67 views
2

通常,我在項目中使用maven,但由於某些遷移問題,我必須(暫時)下載jar。使用qrgen和zxing庫異常java.lang.NoSuchMethodError

我想用下面的代碼:

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import net.glxn.qrgen.QRCode; 
import net.glxn.qrgen.image.ImageType; 

public class Main { 
    public static void main(String[] args) { 
     ByteArrayOutputStream out = QRCode.from("Hello World") 
             .to(ImageType.PNG).stream(); 

     try { 
      FileOutputStream fout = new FileOutputStream(new File(
        "C:\\QR_Code.JPG")); 

      fout.write(out.toByteArray()); 

      fout.flush(); 
      fout.close(); 

     } catch (FileNotFoundException e) { 
      // Do Logging 
     } catch (IOException e) { 
      // Do Logging 
     } 
    } 
} 

我增加了一個罐子裏我的項目:

qrgen-1.3.jar 

但後來,我已經有一個例外:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/zxing/Writer 

所以我加了兩個其他的罐子:

zxing-core-1.7.jar 
zxing-j2se-1.7.jar 

,現在,我已經得到了另一個錯誤:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.zxing.Writer.encode(Ljava/lang/String;Lcom/google/zxing/BarcodeFormat;IILjava/util/Map;)Lcom/google/zxing/common/BitMatrix; 

,在這裏我不能修復它。

哪裏可能有問題?

我相信它從第一行FO我的代碼有云:

ByteArrayOutputStream out = QRCode.from("Hello World").to(ImageType.PNG).stream(); 

回答

2

嘛,你使用這個庫的版本錯誤斑馬線的。看起來像1.3使用2.0,並且你將它與1.7配對:https://github.com/kenglxn/QRGen/blob/e74f7912e19eb99c84100d5840e2be2e48108747/pom.xml#L40

這幾乎總是這些錯誤的含義。使用像Maven這樣的工具避免了這一點。此外,這兩個版本的依賴關係現在已經老化了。

+0

正如我寫的,我使用Maven但不是w,我有一些回購問題,所以我想爲它做快速的解決方法。最後,它完美地工作。非常感謝你。 – ruhungry

+0

我刪除了罐子,並將依賴關係添加到我的'pom.xml'中。它也很完美。 – ruhungry

0

嘗試qrgen-1.0.jar.That會做這項工作給你。

1

我爲我的JavaEE web應用程序使用了QRGen/ZXING。通過試驗,將這些需要:

的.jar:

  • qrgen核-2.0
  • qrgen-JavaSE的-2.0
  • 斑馬線核-3.1.0
  • 斑馬線-javase-3.1.0

(至少對於這種組合,我可以確認這些.jar版本工作無線彼此之間。)

導入:

import net.glxn.qrgen.core.image.ImageType; 
import net.glxn.qrgen.javase.QRCode; 

下面是鏈接,其中最新的.jar文件可以下載:

相關問題