2015-04-14 11 views
7

, जावा में निम्न कोड दिया यू त्रुटियों की एक बहुत कुछ है:त्रुटि: पैकेज com.google.common.base मौजूद नहीं है जब यह संकलन


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;

मैं इसे इंटेलीजे के माध्यम से चलाते हैं। क्या किसी को पता है कि यह क्यों काम नहीं करता है?

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

आप शायद उन पैकेज के तहत संकुल खुद को बजाय कक्षाओं आयात करने के लिए कोशिश की। उदाहरण के लिए, पहली त्रुटि के लिए 'आयात स्थिर com.google.com.base.Preconditions। *' जोड़ने का प्रयास करें। – chesh

+0

मेवेन या ग्रेडल के लिए विज्ञापन निर्भरता, फिर 'ग्रेलेव्यू विचार' या 'मेवेन क्लीन बिल्ड' और इंटेलिज में फ़ाइल -> अमान्य कैहिस/पुनरारंभ करें –

उत्तर

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

pom.xml में निर्भरता जोड़कर मैं इस समस्या

1

क्या आप निर्भरता प्रबंधक के रूप में कुछ भी उपयोग कर रहे हैं? यदि आप मेवेन की तरह कुछ उपयोग करते हैं, तो यह वास्तविक जार प्राप्त करने और उन्हें अपने कक्षा में रखने की देखभाल करेगा।

क्लासपाथ में सामान जोड़ने के कई तरीके हैं, लेकिन मूल रूप से एक तरफ या किसी अन्य चीज़ में जार प्राप्त करना होता है जिसमें कक्षाएं होती हैं जिन्हें आप आयात करना चाहते हैं और संकलन करते समय उन्हें संदर्भित करते हैं। अन्यथा आपके स्थानीय पर्यावरण को यह जानने का कोई तरीका नहीं है कि आप क्या आयात कर रहे हैं।

यह उन सामानों से अलग है जिन्हें आप बिना किसी विदेशी जार के आयात कर सकते हैं। java.util.*; जैसे पैकेज आपके द्वारा उपयोग किए जाने वाले जेडीके के साथ आते हैं, यही कारण है कि आप उन्हें आयात कर सकते हैं और बिना किसी काम के संकलन कर सकते हैं।

1

किसी होने इसी तरह के मुद्दों का समाधान करने में सक्षम था, यह एक निर्भरता मुद्दा है।

इंटेलीजे में:

  1. ओपन pom.xml फ़ाइल।
  2. संपादक टैब पर ध्यान केंद्रित करने के साथ, Code | Generate on the main menu चुनें, या Alt+Insert दबाएं, और जनरेट पॉप-अप विंडो से निर्भरता चुनें।

इससे इस समस्या को ठीक करना चाहिए।

1

अपने Gradle फ़ाइल को यह निर्भरता जोड़ें

compile "com.google.guava:guava:16+" 
संबंधित मुद्दे