2015-04-14 17 views
7

podano następujący kod w Javie, podczas kompilowania go u mają dużo błędów:błąd: pakiet com.google.common.base nie istnieje


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;

go uruchomić poprzez IntelliJ. Czy ktoś wie, dlaczego to nie działa?

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

Prawdopodobnie próbował importować samych paczek zamiast zajęcia w ramach tych pakietów. Na przykład spróbuj dodać 'import static com.google.com.base.Preconditions. *' Dla pierwszego błędu. – chesh

+0

zależność od reklamy do maven lub gradle, następnie 'gradlew idea' lub' maven clean build' oraz w Intellij kliknij Plik -> Unieważnij cahces/Restart –

Odpowiedz

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

dodając zależność w pom.xml udało mi się rozwiązać problem

1

Czy używasz czegoś jako menedżer zależności? Jeśli użyjesz czegoś podobnego do maven, zajmie się on zdobyciem rzeczywistych słoików i umieszczeniem ich w swojej ścieżce klasowej.

Istnieje wiele sposobów dodawania elementów do ścieżki klas, ale w zasadzie w taki czy inny sposób coś musi dostać słoiki, które zawierają klasy, które chcesz zaimportować i odwoływać się do nich podczas kompilacji. Albo twoje lokalne środowisko nie ma możliwości dowiedzenia się, co importujesz.

Różni się to od rzeczy, które można importować bez obcych słoików. Pakiety takie jak java.util.*; są dostarczane z jdk którego używasz, dlatego możesz je importować i kompilować bez żadnych dalszych prac.

1

ktoś mający podobne problemy, jest to kwestia zależności.

W IntelliJ:

  1. Otwórz plik pom.xml.
  2. Po wybraniu karty edytora wybierz opcję Code | Generate on the main menu lub naciśnij przycisk Alt+Insert i wybierz opcję Zależność w wyskakującym oknie Wygeneruj.

To powinno naprawić ten problem.

1

Dodaj tę zależność do pliku Gradle

compile "com.google.guava:guava:16+" 
Powiązane problemy