Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误:包com.google.common.base不存在_Java_Intellij Idea - Fatal编程技术网

Java 错误:包com.google.common.base不存在

Java 错误:包com.google.common.base不存在,java,intellij-idea,Java,Intellij Idea,考虑到以下java代码,编译时会出现很多错误: Main.java:1:错误:包com.google.common.base不存在 导入com.google.common.base.premissions; ^ Main.java:2:错误:包com.google.common.collect不存在 导入com.google.common.collect.list; ^ Main.java:3:错误:包org.ros.exception不存在 导入org.ros.exception.RosRu

考虑到以下java代码,编译时会出现很多错误:


Main.java:1:错误:包com.google.common.base不存在 导入com.google.common.base.premissions; ^

Main.java:2:错误:包com.google.common.collect不存在 导入com.google.common.collect.list; ^

Main.java:3:错误:包org.ros.exception不存在 导入org.ros.exception.RosRuntimeException; ^

Main.java:4:错误:包org.ros.internal.loader不存在 导入org.ros.internal.loader.CommandLineLoader; ^

Main.java:5:错误:包org.ros.node不存在 导入org.ros.node.DefaultNodeMainExecutor; ^

Main.java:6:错误:包org.ros.node不存在 导入org.ros.node.NodeConfiguration; ^

Main.java:7:错误:包org.ros.node不存在 导入org.ros.node.NodeMainExecutor

我通过IntelliJ运行它。有人知道它为什么不起作用吗

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);
  }

}

您是否使用任何东西作为依赖项管理器?如果您使用像maven这样的东西,它将负责获取实际的JAR并将它们放在类路径中

有许多方法可以向类路径添加内容,但基本上,必须以某种方式获取包含要导入的类的jar,并在编译时引用它们。否则,您的本地环境无法知道您正在导入什么

这与不带任何外来罐子就可以进口的东西不同。包,例如
java.util.*随您使用的jdk一起提供,这就是为什么您可以导入它们并进行编译,而无需进行任何进一步的工作。


<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>11.0.2</version>
</dependency>
番石榴 番石榴 11.0.2

通过在pom.xml中添加依赖项,我能够解决这个问题

任何有类似问题的人,这都是一个依赖项问题

在IntelliJ中:

  • 打开
    pom.xml
    文件
  • 在编辑器选项卡具有焦点的情况下,选择主菜单上的
    code | Generate
    ,或按
    Alt+Insert
    ,然后从生成弹出窗口中选择Dependency

  • 这将解决此问题。

    将此依赖项添加到Gradle文件中

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

    您可能试图导入包本身,而不是那些包下的类。例如,尝试添加
    import static com.google.com.base.premissions.*
    作为maven或gradle的第一个error.ad依赖项,然后
    gradlew idea
    maven clean build
    并在Intellij中单击文件->使cahces无效/RestartWorked以解决问题…包com.google.common.base不存在