当前位置: 首页 > 知识库问答 >
问题:

如何用导入的类编译java程序?

水麒
2023-03-14

我正在尝试使用java软件weka的API。我写了下面的测试代码:

import weka.core.Instances;
import java.io.BufferedReader;
import java.io.FileReader;

public class hello_weka {
  public static void main(String[] args) throws Exception {
      BufferedReader reader = new BufferedReader(new FileReader("/home/aljoscha/Masterarbeit/weka_examples/iris.arff"));
      Instances data = new Instances(reader);
      reader.close();
      // setting class attribute
      data.setClassIndex(data.numAttributes() -1);
      System.out.println(data);
      System.exit(0);
  }
} 

当我在Eclipse中执行它时,它工作正常。但是,我无法让它在终端中运行。

我尝试在编译期间提供. jar路径,然后从已编译类的目录中执行程序。

javac -cp /usr/share/java/weka.jar hello_weka.java
java hello_weka

此方法不起作用,我收到以下错误:

异常线程"main"java.lang.NoClassDefFoundError: weka/core/实例在hello_weka.main(hello_weka.java: 8)引起:java.lang.ClassNotFoundException:weka.core.Instancesjava.net.URLClassLoader$1.run(URLClassLoader.java:217)在java.html" target="_blank">security.AccessController.doPrivileged(本机方法)在java.net.URLClassLoader.findClass(URLClassLoader.java:205)在java.lang.ClassLoader.loadClass(ClassLoader.java:321)在sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)在java.lang.ClassLoader.loadClass(ClassLoader.java:266)

我做错了什么?

我想我只是在做一些完全愚蠢的事情,因为我刚刚开始用Java编码。如果是这样,请原谅我,并试着告诉我如何做得更好。

编辑:

当我尝试答案中建议的方法时,我得到以下错误:

线程“main”java.lang.NoClassDefFoundError中的异常:hello_weka由以下原因引起:java.lang.ClassNotFoundException:hello_wekajava.net.URLClassLoader1.run(URLClassLoader.java:217)在java.security.AccessController.doPrivileged(本机方法)在java.net.URLClassLoader.findClass(URLClassLoader.java:205)在java.lang.ClassLoader.loadClass(ClassLoader.java:321)在sun.misc.LauncherAppClassLoader.loadClass(Launcher.java:294)在java.lang.ClassLoader.loadClass(ClassLoader.java:266)找不到主类:hello_weka。程序将退出。

共有3个答案

苏华荣
2023-03-14

您还需要将当前目录(存储您自己的类的位置)添加到类路径中:

java -cp .;/usr/share/java/weka.jar hello_weka
蒋华美
2023-03-14

在执行程序时,您还需要提供JAR的类路径:

java -cp /usr/share/java/weka.jar hello_weka
督德泽
2023-03-14

试试这个:

java-cp /usr/share/java/weka.jarhello_weka

 类似资料:
  • 问题内容: 我无法使javac识别我要扩展其类的外部.jar文件。我在同一目录中有两个文件:TestConsole.java和acm.jar。我正在使用以下命令从同一目录进行编译: 但是似乎javac只是忽略了acm.jar。它给了我错误: 当然,acm.program是acm.jar中的一个包。acm.jar中的所有类均已编译;我只想在我的课程中使用它们,而不是编译它们。 我究竟做错了什么? 我

  • 问题内容: 我知道,这里已经问过许多类似的问题。我不是在问我是否可以保护编译的Java类- 因为显然您会说“不,您不能”。我问的是最著名的保护Java类免于反编译的方法是什么?如果您知道该领域的任何研究或学术论文,请告诉我。另外,如果您使用过某些方法或软件,请分享您的经验吗?任何种类的信息都将非常有用。谢谢。 问题答案: 首先,如果你的目标“只” Windows的市场有一个非常简单的防止“的.cl

  • 问题内容: 我可以使用什么程序反编译类文件?我实际上会得到Java代码,还是仅仅是JVM汇编代码? 关于此站点上的Java性能问题,我经常看到“反编译” Java类文件以了解编译器如何优化某些东西的人们的回答。 问题答案: 有一些反编译器…快速搜索结果: Procyon: open-source (Apache 2) and actively developed Krakatau: open-so

  • 为每种语言预构建一个单独的应用程序包 服务适当的应用程序包 :语言环境的名称

  • 问题内容: 我将类名称存储在属性文件中。我知道类存储将实现IDynamicLoad。如何动态实例化该类? 现在我有 newInstance是否仅加载编译的.class文件?如何加载未编译的Java类? 问题答案: 如何加载未编译的Java类? 你需要先编译它。可以使用以编程方式完成此操作。这仅需要在JRE顶部的本地计算机上安装JDK。 这是一个基本的启动示例(不包括明显的异常处理): 哪个像 如果