【问题标题】:Find the .class file compiled by Eclipse找到Eclipse编译的.class文件
【发布时间】:2013-06-19 02:11:15
【问题描述】:

问题:

我应该如何只编译一个类?如何将其放入类文件(我已创建)? Eclipse 不就是在运行时自动编译所有的类吗?

背景故事:

我正在关注tutorial,它告诉我:

将编译好的类放入WEB-INF/classes。

班级在哪里:

package org.odata4j.tomcat;
import java.util.Properties;
import org.core4j.Enumerable;
import org.core4j.Func;
import org.core4j.Funcs;
import org.odata4j.producer.ODataProducer;
import org.odata4j.producer.ODataProducerFactory;
import org.odata4j.producer.inmemory.InMemoryProducer;

public class ExampleProducerFactory implements ODataProducerFactory {

  @Override
  public ODataProducer create(Properties properties) {
    InMemoryProducer producer = new InMemoryProducer("example");

    // expose this jvm's thread information (Thread instances) as an entity-set called "Threads"
producer.register(Thread.class, Long.class, "Threads", new Func<Iterable<Thread>>() {
  public Iterable<Thread> apply() {
    ThreadGroup tg = Thread.currentThread().getThreadGroup();
    while (tg.getParent() != null)
      tg = tg.getParent();
    Thread[] threads = new Thread[1000];
    int count = tg.enumerate(threads, true);
    return Enumerable.create(threads).take(count);
  }
}, Funcs.method(Thread.class, Long.class, "getId"));

return producer;
  }
 }

【问题讨论】:

  • "Doesn't Eclipse just automatically compile all the classes at runtime?" -- Eclipse 会在您键入时自动编译。这是它可以快速识别编译错误的一种方式。如果你查看 bin 子目录,你会看到类文件。
  • 通常 Eclipse 会为您执行此操作。如果您转到 Eclipse 构建路径(右键单击项目上的属性 -> 构建路径)然后选择“源”,它应该会显示一个输出文件夹。
  • 你可以使用javac来编译你想要的任何java文件,如果它在你的路径上。
  • @HovercraftFullOfEels 注意eclipse默认编译,但不需要。

标签: java eclipse file class


【解决方案1】:

当您保存.java 文件时,如果没有编译器错误,Eclipse 会将其编译为.class 文件。您通常可以在项目的bin 子目录中找到此文件。特别是,它将在bin/org/odata4j/tomcat 中,因为您已声明您的类属于org.odata4j.tomcat 包。随意将此文件复制到您希望的任何位置。

注意:如果您拥有 odata4j.org 域,则只能在包名称中使用 org.odata4j。否则,您应该选择自己的包名称。

【讨论】:

  • bin子目录应该在哪里?
  • 在项目的根目录中,但根据项目配置,它可能是不同的文件夹。您可以在“属性”菜单的“构建路径”部分中进行检查。
  • 更准确地说,导航时有一个“默认输出文件夹”输入元素:右键单击项目->属性->选择“Java构建路径”
【解决方案2】:

我在 Project -> Properties -> Java Build Path 字段 Default output folder 中找到我的类文件>。 对我来说,默认值是“项目名称/目标/类”。

【讨论】:

  • 因为你的项目使用的是 Maven。 Eclipse 只是尊重它并使用 maven 约定。
【解决方案3】:

您的 java 文件位置应为:org/odata4j/tomcat/ExampleProducerFactory.java 然后你可以在命令行上做:javac org/odata4j/tomcat/ExampleProducerFactory.java 这将创建编译的类文件:org/odata4j/tomcat/ExampleProducerFactory.class 把它放在一个文件夹WEB-INF/classes/org/odata4j/tomcat/ExampleProducerFactory.class

但更好的是,在 Eclipse 中创建“动态 Web 项目”,它会为您处理所有事情(只需使用默认值)。最终结果将是一个.war 文件,您可以通过菜单选项创建该文件:file->export

这样的.war 文件可以部署在任何Web 容器中,例如tomcat。在你的 tomcat 中寻找一个 autodeploy 目录或使用 tomcat 管理控制台来部署它。

【讨论】:

    【解决方案4】:

    .java编译成功后,.class会在项目workspace下的bin文件夹中。

    【讨论】:

      【解决方案5】:

      为了在 Eclipse 中正常工作,您需要在“动态 Web 项目”中工作,而不是在普通的“Java 项目”中工作,后者在 Eclipse 的标准纯 Java 下载中不可用。

      您需要下载并使用 Eclipse 的 Java EE 风格,或者将 WTP 添加到您当前的安装中以获取它。

      请注意,启动和运行一个简单的 Web 应用程序最简单的方法是使用 Netbeans,它在 Java EE 风格中默认正确连接(包括 Tomcat)。

      【讨论】:

        【解决方案6】:

        假设这个类在一个名为 ExampleProducerFactory.java 的文件中,您可以在命令行中通过导航到包含该文件的目录并键入来编译它

        javac ExampleProducerFactory.java

        这将创建一个名为 ExampleProducerFactory.class 的文件,您可以将其移动到所需的目录。

        【讨论】:

        • 请注意,如果启用了 Eclipse 自动构建,如果您碰巧将该类文件放在配置的输出目录中,它将很快覆盖生成的类文件。 (如WEB-INF/classes
        • @Henry 检查编辑历史。在我发布这个答案时,问题是“如何编译一个只有一个 Java 类?”
        • 投票被锁定,直到您编辑您的答案。所以......如果你编辑我会取消投票。
        【解决方案7】:

        我只需打开java文件位置(在包资源管理器中右键单击-->显示在-->系统资源管理器中)转到工作区顶部并搜索不带扩展名的文件名。 它也给了我 .class 文件。我只是删除它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-26
          • 2014-05-28
          • 2015-01-05
          • 1970-01-01
          • 2023-03-14
          • 2011-02-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多