- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何将文件夹(例如包含 arts 的资源文件夹)添加到 netbeans 项目的类路径中?我设法通过编辑项目的 NB 生成的 jar 文件(即它的 MANIFEST.MF 文件 + 手动复制资源)手动执行此操作,但应该有一种方法可以告诉 netbeans 以及注意资源,不是吗?
文件夹结构如下所示:
/project/art/
/project/dist/lib/
/project/dist/art/
/project/dist/project.jar
/project/lib/
/project/src/
我不想将艺术品打包到 jar 里,因为我希望艺术品可以轻松交换。如果我将艺术文件夹添加到 src 文件夹,那么 NB 可以正常编译,但艺术资源最终会在 jar 中。
将 art 文件夹添加到 netbeans 项目库(属性 -> 库 -> 添加 JAR/文件夹)似乎不起作用,因为我最终得到一个错误 '...\project\art is a directory or can被阅读。不复制图书馆。这反过来甚至可以防止复制真正的库文件夹。
有什么想法吗?
最好的问候克里斯
2 根据 gpeche 的评论做出的观察:a) 与其在项目属性的“编译”选项卡中指定附加资源文件夹,不如在“运行”选项卡中指定 -> 库在 Netbeans 中似乎没有太大区别(我目前使用的是 6.9.1) .输出(以及错误)保持不变,即没有任何内容被复制:
Created dir: C:\Users\Chrisi\Desktop\vocabulary\VocabularyTrainer\dist
C:\Users\Chrisi\Desktop\vocabulary\VocabularyTrainer\art is a directory or can't be read. Not copying the libraries.
Not copying the libraries.
Building jar: C:\Users\Chrisi\Desktop\vocabulary\VocabularyTrainer\dist\VocabularyTrainer.jar
另一个有趣的方面是,在“库”面板的帮助菜单中,没有明确提及将文件夹作为库。 Netbeans 中的按钮是否有可能被错误命名,即只允许使用真正的 jar?
b) 将资源文件夹添加到库列表确实会产生影响,将另一个条目添加到 MANIFEST.MF。虽然 - 这是一个较小的问题 - 类路径条目似乎总是期望资源文件夹是库文件夹的子文件夹(例如“lib/arts”),但主要问题是似乎缺少斜线。如前所述,在 MANIFEST.MF 中 NB 生成的条目看起来像这样的“lib/arts”(这对我不起作用),而(手动设置)“lib/arts/”呢?!
我使用文件夹中资源的方式是这样的:
URL resource = getClass().getResource("/gui/refresh.png");
ImageIcon tmp = new ImageIcon(resource);
编辑:
基于 Tushar 的评论和 this posting我发现以下解决方案是功能性和舒适性之间可接受的权衡。
我覆盖了自动生成的“build-impl.xml”文件中的 ANT 目标,该文件在 Netbeans 项目的基本“build.xml”文件中的 MANIFEST.MF 文件中创建了类路径。进入“build.xml”文件的代码如下所示:
<property name="art.classpath" value="art/" />
<target name="-post-jar">
<mkdir dir="${dist.dir}/art"/>
<copy todir="${dist.dir}/art">
<fileset dir="${basedir}/art">
<!-- <exclude name="**/!source/**"/> if you want to exclude something... -->
</fileset>
</copy>
</target>
<target name="-init-macrodef-copylibs">
<macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
<element name="customize" optional="true"/>
<sequential>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath} ${art.classpath}"/>
<customize/>
</manifest>
</copylibs>
</sequential>
</macrodef>
</target>
权衡是,为了在 Netbeans 中进行开发,我仍然必须将资源文件夹(例如“art”)添加到库列表中,以使项目在 Netbeans 中运行。这将导致在 MANIFEST.MF 文件('lib/art')中增加一个条目,并导致库不会自动复制到 'dist' 文件夹,并显示消息
...\art is a directory or can't be read. Not copying the libraries.
Not copying the libraries.
这种行为是 - afaik - 意图(强制所有东西都捆绑在一个 jar 里),即使有关于它的讨论正在进行中。要制作真正的分发包,我必须从 NB 的库列表中删除资源文件夹并重建。
关于无需任何权衡的更简化设置的想法当然仍然受到欢迎。 :)
最佳答案
将资源文件夹添加到类路径:
当您清理并构建基于 NetBeans Ant 的项目时,它会在项目的根目录中创建一个 manifest.mf 文件。该文件也包含在 JAR 文件中。修改此文件并添加如下条目:
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Class-Path: arts/
斜线在类路径中的 arts 之后很重要。
在分发中包含艺术资源文件夹
要么在构建之后将此文件夹复制到 dist 文件夹中,要么添加一个 ANT 目标以将所需的资源复制到 dist 文件夹中。
在build.xml文件中添加如下目标:
<target name="-post-jar">
<mkdir dir="${dist.dir}/resources"/>
<copy todir="${dist.dir}/resources">
<fileset dir="${basedir}/resources" />
</copy>
</target>
访问此类资源的代码:
访问此类资源文件所需的代码如下:(这在设计时不起作用,但肯定来自 JAR 文件)
// pay attention to relative path
URL resource = ClassLoader.getSystemResource("gui/refresh.png");
ImageIcon tmp = new ImageIcon(resource);
注意:位于项目根目录中的文件 manifest.mf 和 build.xml 可以从 NetBeans IDE 的文件面板访问
关于java - 如何将资源添加到类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718201/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!