【问题标题】:How to make Eclipse Compiler copy existing class files to the target dir?如何让 Eclipse 编译器将现有的类文件复制到目标目录?
【发布时间】:2012-02-27 18:04:34
【问题描述】:

如何让 Eclipse 将所有文件(.java 除外)从源目录复制到输出目录?我的资源下有一些类文件,但它们被过滤掉了。 “Preferences -> Java -> Compiler -> Building -> Filtered Resources”设置对我不起作用。

谢谢!

编辑

我想出了一个解决方案:在 Eclipse 项目中添加额外的 Builder。这是一个 Ant 脚本:

<project name="example" default="copy_resources" basedir=".">
    <target name="copy_resources" depends="" >
        <copy todir="bin" overwrite="false">
            <fileset dir="src">
                <exclude name="**/*.java" />
            </fileset>
        </copy>
    </target>
</project>

但是我必须手动触发“构建项目”命令才能执行 Ant 脚本。当我做“清洁”时,它不会被执行......

【问题讨论】:

标签: java eclipse


【解决方案1】:

您需要将类目录与源代码放在不同的目录中,我通常将它们放在一个名为“lib”的目录中(不仅是类目录,还有 jars)。

一旦你将类放在不同的目录中:

右键项目>属性>Java构建路径>库 选项卡 > 添加类文件夹按钮 > 选择目录 > 确定 > 确定

在构建项目时,应包含类目录。

【讨论】:

  • 不一样。我在源中拥有的​​“.class”文件是我需要在那个地方拥有的资源。
  • 请检查我的另一个问题的背景:stackoverflow.com/questions/9468607/…
  • 为什么必须将它们放在源目录中?如果您使用完全相同的包结构,那么放置类文件的位置没有区别(如果您将它们添加到构建路径中)
  • 我在运行时使用放置在同一包中的类的 getClass().getResource() 访问资源。这种方法不需要绝对路径,并且适用于 IDE 和 JAR。
  • 请问您为什么要这样做?
【解决方案2】:

听起来.class 文件是来自其他东西的工件,要么是签入的,要么是由外部进程创建的。无论哪种情况,Eclipse 似乎都没有意识到它们(根据您的描述)。

您可以尝试以下操作:将新构建器添加到您的项目中。选择“Ant”并在工作空间的根目录下选择build.xml(或您决定的任何位置——您需要制作此文件)。每当您的项目重建时,ant 脚本就会运行。

<?xml version="1.0" encoding="UTF-8"?>
<project default="copy">
  <target name="copy">
    <mkdir dir="someplace"/>
      <copy todir="someplace">
        <fileset dir="source">
          <include name="**/*.class"/>
        </fileset>
      </copy>       
   </target>
</project>

您只需要修复文件的源和目标。

【讨论】:

  • 你的问题是正确的。我在您前一分钟发布了相同的解决方案 :-) 不幸的是,即使启用了“自动构建”,我也必须手动触发“构建项目”操作。
猜你喜欢
  • 1970-01-01
  • 2015-07-30
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
相关资源
最近更新 更多