【发布时间】:2015-06-20 01:57:33
【问题描述】:
在java中给出以下代码,编译时你有很多错误:
Main.java:1:错误:com.google.common.base 包不存在 导入 com.google.common.base.Preconditions; ^
Main.java:2:错误:com.google.common.collect 包不存在 导入 com.google.common.collect.Lists; ^
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);
}
}
【问题讨论】:
-
您可能尝试导入包本身而不是这些包下的类。例如,尝试为第一个错误添加
import static com.google.com.base.Preconditions.*。 -
广告依赖于 maven 或 gradle,然后
gradlew idea或maven clean build并在 Intellij 中单击 File -> Invalidate cahces/ Restart
标签: java intellij-idea