2009-11-17 8 views
17
import java.io.*; 
import jxl.*; 
class Xlparsing 
{ 
    Workbook wb =wb.getWorkbook(new File(
    "C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\new.xls")); 
    // Illegal forward reference What it means 
    Sheet st = wb.getSheet(0); 
    Cell cell1 = st.getCell(0,0); 
    String a1 = cell1.getContents(); 
    public static void main(String s[]) 
    { 
    System.out.println(new Xlparsing().a1); 
    } 
} 

Hola Cuando traté de extraer datos de la hoja de Excel, el error de referencia de reenvío ilegal se produce en la creación del objeto de archivo.referencia directa ilegal en java

¿Cómo resolver esto?

+0

Si el comentario en el código es la pregunta, ¿cuándo lo consigue? ¿De donde? ¿Como una excepción? Seguro que no es un concepto de javac lanzar referencias directas ilegales frente al usuario. Si se trata de una excepción, probablemente esté muy relacionado con el archivo xls al que no tenemos acceso. – Fredrik

+0

Este error viene cuando intenté compilar el código –

+0

¿Puede mostrar el error del compilador? – notnoop

Respuesta

49

"Referencia directa no válida" significa que está intentando utilizar una variable antes de que esté definida.

En este caso, está intentando invocar un método en wb en la declaración de wb.

Workbook wb = wb.getWorkbook(...); 
+3

Parece que getWorkbook está estático en la API así que: Workbook wb = Workbook.getWorkbook (...); debería hacer el truco – barrowc

+0

Ah, busqué en Google para averiguar qué API está usando pero no pude encontrar una coincidencia exacta. – erickson

+0

JExcelAPI: http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/Workbook.html – sanastasiadis

-1

aunque getWorkbook es estático, por lo tanto, este código debería haber funcionado. Pero aquí, usar la referencia antes de su declaración o en la misma declaración que la declaración está causando el error "Reenviar la referencia, es decir, usar la referencia antes de la declaración".

+1

'Getworkbook' puede ser estático, pero' wb' no lo es. Aún no puede llamar a un método estático en una referencia no inicializada. –

0

Forward Illegal Reference es un término que aparece en la imagen cuando un valor de variable no global no inicializado se asigna a una variable global.

En su caso Workbook wb = wb.getWorkbook(new File("----")); - wb no está inicializado antes de llamar al método getWorkbook(). Para evitar el FIR, debe inicializar wb.

0

Supongo que la intención era llamar 'estáticamente' el método getWorkbook(), como debería. Por lo tanto, usted debe cambiar su inicialización wb miembro como:

Workbook wb = Workbook.getWorkbook(...)