2015-04-14 26 views
7

dato il seguente codice in Java, quando compilarlo u hanno un sacco di errori:errore: pacchetto com.google.common.base non esiste


Main.java:1: error: package com.google.common.base does not exist import com.google.common.base.Preconditions; ^

Main.java:2: error: package com.google.common.collect does not exist import com.google.common.collect.Lists; ^

Main.java:3: error: package org.ros.exception does not exist import org.ros.exception.RosRuntimeException; ^

Main.java:4: error: package org.ros.internal.loader does not exist import org.ros.internal.loader.CommandLineLoader; ^

Main.java:5: error: package org.ros.node does not exist import org.ros.node.DefaultNodeMainExecutor; ^

Main.java:6: error: package org.ros.node does not exist import org.ros.node.NodeConfiguration; ^

Main.java:7: error: package org.ros.node does not exist import org.ros.node.NodeMainExecutor;

corro via IntelliJ. Qualcuno sa perché non funziona?

import com.google.common.base.Preconditions; 
import com.google.common.collect.Lists; 
import org.ros.exception.RosRuntimeException; 
import org.ros.internal.loader.CommandLineLoader; 
import org.ros.node.DefaultNodeMainExecutor; 
import org.ros.node.NodeConfiguration; 
import org.ros.node.NodeMainExecutor; 

// This class will run a publisher and subscriber, and relay data between them. 

public class Main { 

static private Talker pubNodeMain; 

static private Listener subNodeMain; 

public static void main(String[] argv) throws Exception { 
    // Set up the executor for both of the nodes 
    NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault(); 

    // Load the publisher 
    String[] pubArgv = {"Talker"}; 
    CommandLineLoader pubLoader = new CommandLineLoader(Lists.newArrayList(pubArgv)); 
    String nodeClassName = pubLoader.getNodeClassName(); 
    System.out.println("Loading node class: " + pubLoader.getNodeClassName()); 
    NodeConfiguration pubNodeConfiguration = pubLoader.build(); 

    try { 
     pubNodeMain = (Talker) pubLoader.loadClass(nodeClassName); 
    } catch (ClassNotFoundException e) { 
     throw new RosRuntimeException("Unable to locate node: " + nodeClassName, e); 
    } catch (InstantiationException e) { 
     throw new RosRuntimeException("Unable to instantiate node: " + nodeClassName, e); 
    } catch (IllegalAccessException e) { 
     throw new RosRuntimeException("Unable to instantiate node: " + nodeClassName, e); 
    } 

    Preconditions.checkState(pubNodeMain != null); 
    nodeMainExecutor.execute(pubNodeMain, pubNodeConfiguration); 

    // Load the subscriber 
    String[] subArgv = {"Listener"}; 
    CommandLineLoader subLoader = new CommandLineLoader(Lists.newArrayList(subArgv)); 
    nodeClassName = subLoader.getNodeClassName(); 
    System.out.println("Loading node class: " + subLoader.getNodeClassName()); 
    NodeConfiguration subNodeConfiguration = subLoader.build(); 

    try { 
     subNodeMain = (Listener) subLoader.loadClass(nodeClassName); 
    } catch (ClassNotFoundException e) { 
     throw new RosRuntimeException("Unable to locate node: " + nodeClassName, e); 
    } catch (InstantiationException e) { 
     throw new RosRuntimeException("Unable to instantiate node: " + nodeClassName, e); 
    } catch (IllegalAccessException e) { 
     throw new RosRuntimeException("Unable to instantiate node: " + nodeClassName, e); 
    } 

    Preconditions.checkState(subNodeMain != null); 
    nodeMainExecutor.execute(subNodeMain, subNodeConfiguration); 
    } 

} 
+0

Probabilmente tentato di importare i pacchetti stessi invece delle classi in questi pacchetti. Ad esempio, prova ad aggiungere "Importa statico com.google.com.base.Preconditions. *" Per il primo errore. – chesh

+0

Dipendenza pubblicitaria per Maven o Gradle, quindi 'gradlew idea' o' maven clean build' e in Intellij fare clic su File -> Invalidate cahces/Restart –

risposta

7
<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>11.0.2</version> 
</dependency> 

con l'aggiunta di dipendenza nel pom.xml sono stato in grado di risolvere il problema

1

Stai utilizzando qualcosa come gestore delle dipendenze? Se si utilizza qualcosa come Maven, si prenderà cura di ottenere i barattoli effettivi e inserirli nel classpath.

Ci sono molti modi per aggiungere roba a classpath, ma fondamentalmente in un modo o nell'altro qualcosa deve ottenere i vasi che contengono le classi che si desidera importare e fare riferimento a loro durante la compilazione. Oppure il tuo ambiente locale non ha modo di sapere cosa stai importando.

Questo è diverso da cose che è possibile importare senza giare straniere. Pacchetti come java.util.*; vengono forniti con il jdk che usi e per questo puoi importarli e compilarli senza ulteriori interventi.

1

chiunque abbia problemi simili, questo è un problema di dipendenza.

In IntelliJ:

  1. Aprire il file pom.xml.
  2. Con la scheda dell'editor che ha lo stato attivo, selezionare Code | Generate on the main menu o premere Alt+Insert e scegliere Dipendenza dalla finestra a comparsa Genera.

Questo dovrebbe risolvere questo problema.

1

Aggiungi questa dipendenza al file Gradle

compile "com.google.guava:guava:16+" 
Problemi correlati