我有一些旧的Microsoft Word文件(可能是Word 97),并注意到标准的Unix文件实用程序将这些文件识别为"CDF".它实际上更精确,倾倒详细的元数据,例如:
CDF V2 Document,
Little Endian,
Os: Windows,
Version 4.0,
Code page: 1252,
Title: ...,
Author: ...,
Template: Normal.dot,
Last Saved By: ...,
Revision Number: 1,
Name of Creating Application: Microsoft Word 8.0,
Create Time/Date: ...,
Last Saved Time/Date: ...,
Number of Pages: 1,
Number of Words: 95,
Number of Characters: 542,
Security: 0
Run Code Online (Sandbox Code Playgroud)
CDF代表什么?这是一种通用的容器格式,如媒体文件的RIFF?我在网上找不到任何有用的东西."通道定义格式"和"复合文档格式"显然不是意思,因为那些Microsoft Word文件是完全二进制的.对于通用数据格式,我找不到连接.我试图在文件util的源代码中找到一些东西(在FreeBSD附带的版本中),但我只能发现它有一个专用的readcdf.c处理这种格式.
我希望javac任务使用系统类路径中的jar,我指的是在ant启动之前在shell环境中设置的类路径.那个类路径是
CLASSPATH=D:\local\lib\java\*;.;C:\lib\java\*;C:\lib\java\db\*
Run Code Online (Sandbox Code Playgroud)
在我的系统上.我在那里有许多项目使用的流行罐子.我在构建文件中使用的基本代码片段是
<target name="build">
<mkdir dir="${obj}" />
<javac srcdir="${src}" destdir="${obj}"
includes="**/*.java"
excludes="**/package-info.java **/deprecated/*.java"
includeAntRuntime="no" debug="true" debuglevel="source,lines"
>
<compilerarg value="-Xlint"/>
</javac>
</target>
Run Code Online (Sandbox Code Playgroud)
这样,ant只将输出目录作为类路径传递.
[javac] '-classpath'
[javac] 'D:\dev\tbull-projects\jsonc\obj'
Run Code Online (Sandbox Code Playgroud)
(jsonc是我正在研究的项目,并且D:\dev\tbull-projects\jsonc是工作目录.)我浏览了一段时间的文档并提出了两次尝试.第一个是将属性添加classpath="${java.class.path}"到javac标记.这会将一个非常长的类路径传递给编译器,列出来自ant自己的lib目录的每个jar,最后是来自JDK的tools.jar.不是我想要的类路径.
第二枪是设定
<property name="build.sysclasspath" value="first" />
Run Code Online (Sandbox Code Playgroud)
在javac被调用之前,这让我朝着正确的方向前进.现在这些行是输出:
dropping D:\dev\tbull-projects\jsonc\D:\local\lib\java\* from path as it doesn't exist
dropping D:\dev\tbull-projects\jsonc\C:\lib\java\* from path as it doesn't exist
dropping D:\dev\tbull-projects\jsonc\C:\lib\java\db\* from path as it doesn't exist
dropping D:\dev\tbull-projects\jsonc\C:\Program Files\Java\jdk1.6.0_18\jre\lib\sunrsasign.jar from path as it doesn't exist
dropping D:\dev\tbull-projects\jsonc\C:\Program Files\Java\jdk1.6.0_18\jre\classes from path as it doesn't exist …Run Code Online (Sandbox Code Playgroud) 请在回答之前仔细阅读这个问题,这个问题经常被误解。
我需要一种方法来检查当前解释器中是否存在特定包。我想可能有一种方法可以列出所有已加载的包,以便我可以在该列表中进行搜索。让我们举个例子。这是一个简单的脚本,定义了几个包:
#!/path/to/perl
package Foo;
# some code in package Foo
package Bar;
# some code in package Bar
package main;
# main program. Want to have a list which includes 'Foo' and 'Bar'
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这里没有useor require。这才是重点。我不是在寻找系统上安装的模块(可以通过 traversing 列出这些模块@INC)。我也不寻找已被删除的模块require(那些在 中列出%INC)。我想要一个运行时可用的包列表,即已使用package语句定义的包。我想这相当于谈论已定义的名称空间列表。
事情是这样的。在一个相当大的项目中,我经常发现自己重构模块的结构。这包括移动或重命名模块/包。将模块从Util::Foo重命名为 时Util::Bar,必须完成 3 件事。
Util/Foo.pm从重命名为Util/Bar.pmpackage Util::Foo;为package Util::Bar;