我不明白.我通常将第三方软件安装到/ usr/local中,因此库安装在/ usr/local/lib中,并且从未遇到过链接到这些库的问题.但现在它突然不再有效:
$ gcc -lkaytils -o test test.c
/usr/bin/ld.gold.real: error: cannot find -lkaytils
/usr/bin/ld.gold.real: /tmp/ccXwCkYk.o: in function main:test.c(.text+0x15):
error: undefined reference to 'strCreate'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
当我添加参数而-L/usr/local/lib
不是它的工作但我从来没有必须使用它.找到/ usr/local/include中的头文件而不添加-I/usr/local/include
.
我正在使用Debian GNU/Linux 6(Squeeze),默认情况下在/etc/ld.so.conf.d/libc.conf中有/ usr/local/lib条目,ldconfig缓存知道库我是试图使用:
k@vincent:~$ ldconfig -p | grep kaytils
libkaytils.so.0 (libc6,x86-64) => /usr/local/lib/libkaytils.so.0
libkaytils.so (libc6,x86-64) => /usr/local/lib/libkaytils.so
Run Code Online (Sandbox Code Playgroud)
那么到底是怎么回事?我在哪里可以检查默认情况下通过gcc搜索哪些库路径?也许那里出了点问题.
我正在使用Sping MVC和freemarker视图.我设置了一个FreeMarkerViewResolver来解析视图,它到目前为止工作但现在我有编码问题.我的所有视图都是UTF-8编码的HTML 5页面,我还在<meta charset="UTF-8" />
HTML页面中添加了一个,但字符仍然以错误的编码打印.我用curl检查了HTTP标头,发现了这个:
k@jules:~$ curl -I http://localhost:8080/testweb/test.view
HTTP/1.1 200 OK
Content-Type: */*;charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
但是,当我请求一些不存在的资源(生成Tomcat错误)时,我得到了这个:
k@jules:~$ curl -I http://localhost:8080/testweb/nothere.html
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Run Code Online (Sandbox Code Playgroud)
因此Tomcat本身返回正确的内容类型,但Spring MVC Freemarker视图不会.
对于JSP,我可以在JSP标头中设置Content-Type,但是在哪里可以为freemarker模板设置它?我想我必须在Spring bean配置中的某个地方做这个,但我找不到合适的地方.
我们有一个相当大的SVN存储库(50 GB,超过100000个版本).使用它非常慢,我的猜测是这样做的原因是db/revs和db/revprops中的平面目录结构(其中每个修订版本是一个文件).
我们将FSFS格式与SVN 1.5(在Linux服务器上)一起使用,但是repo是使用较旧的SVN版本创建的.现在我读到SVN 1.5支持"分片",我知道这个功能将修订版本分发到多个目录中,因此单个目录不包含这么多文件.这听起来非常有用,但不幸的是,这个功能看起来只适用于使用SVN 1.5新创建的存储库.
如何将现有的大型线性仓库转换为分片仓库?手册提到了工具"fsfs-reshard.py",但是这个脚本说"这个脚本未完成,不准备用于实时数据.相信我们.".所以我绝对不想用它.还有其他选择吗?
我在Tomcat中将RestEasy和Spring一起使用。我有一个简单的控制器方法,我想通过Ajax(带有JSON或XML响应)和标准的浏览器请求(使用HTML作为响应)使用。当我使用简单的返回数据类型(如字符串)但我需要返回一个自定义对象时,它可以工作:
@POST
@Path("fooBar")
public RequestResult fooBar()
{
return new RequestResult();
}
Run Code Online (Sandbox Code Playgroud)
这是RequestResult对象(仅是用于演示的虚拟实现):
@XmlRootElement(name = "result")
public final class RequestResult
{
@XmlAttribute
public boolean getWhatever()
{
return "whatever";
}
}
Run Code Online (Sandbox Code Playgroud)
当以JSON或XML的形式请求它时有效,但是以HTML的形式请求时,我得到了错误消息Could not find JAXBContextFinder for media type: text/html
。显然,这是行不通的,因为RestEasy不知道如何将该对象转换为HTML。所以我添加了这个测试MessageBodyWriter:
@Provider
@Produces("text/html")
public class ResultProvider implements MessageBodyWriter<RequestResult>
{
@Override
public boolean isWriteable(final Class<?> type, final Type genericType,
final Annotation[] annotations, final MediaType mediaType)
{
return true;
}
@Override
public long getSize(final RequestResult t, final Class<?> type, final Type genericType,
final Annotation[] …
Run Code Online (Sandbox Code Playgroud) 在我的maven项目中,我想组装一个ipkg文件(这就像Debian软件包,但是对于嵌入式系统).为此,我需要使用程序集插件创建AR归档.在插件文档中,我发现了这个:"以及为其配置了ArchiveManager的任何其他格式".但我无法找到如何"配置""ArchiveManager".我怎样才能做到这一点?或者更好:也许某人已经这样做了,我可以使用现有的插件?
我正在使用持续集成软件"Hudson"来构建Maven 2项目.Hudson服务器部署在Tomcat中,该服务器在Debian机器上以"www-data"用户的权限运行.当Hudson运行Maven构建项目时,它会抱怨它无法写入存储库"/var/www/.m2"./ var/www是www-data用户的主目录.我不想在/ var/www中使用此目录.如何配置Hudson或Maven以使用Maven存储库的其他目录?
我正在使用 autoconf/libtool 编写一个共享库,我想为 Linux 和 Windows 编译它(使用 mingw 交叉编译器)。对于 Linux(可能还有其他支持它的平台),我需要设置 -fPIC。所以我把它放到了 Makefile.am 的 CFLAGS 中。但是当我用 mingw 交叉编译它时,gcc 会发出警告:
warning: -fPIC ignored for target (all code is position independent)
Run Code Online (Sandbox Code Playgroud)
因此,显然 Windows 代码不需要此选项。这只是一个警告,但无论如何我都想摆脱它。我怎样才能做到这一点?也许已经有一个 libtool/autoconf 功能可以检查该选项是否受支持并且仅在需要时才设置它,所以我不必在 Makefile.am 中手动执行此操作?
我正在编写一个Maven 2插件,它必须遍历所有项目依赖项,并递归地覆盖这些依赖项的所有依赖项.到目前为止,我只使用此代码设法解决了直接依赖关系:
for (Dependency dependency : this.project.getModel().getDependencies())
{
Artifact artifact = this.artifactFactory.createArtifact(
dependency.getGroupId(),
dependency.getArtifactId(),
dependency.getVersion(),
dependency.getScope(),
dependency.getType());
this.artifactResolver.resolve(
artifact,
this.remoteRepositories,
this.localRepository);
....
}
Run Code Online (Sandbox Code Playgroud)
我怎么能递归地做同样的事情所以我也找到了依赖关系的依赖性等等?
我刚刚在当前的Eclipe Juno Release Candidate中打开了一些旧代码,并注意到一个闪亮的新警告:资源泄漏.它是由这样的代码触发的:
FileChannel out = new FileOutputStream(file).getChannel();
try
{
...Do something with out...
}
finally
{
out.close();
}
Run Code Online (Sandbox Code Playgroud)
Eclipse认为创建的文件输出流是资源泄漏.实际上我不确定这是否是一个错误警告(并且FileChannel的close方法也不会关闭流)或者这是否真的是资源泄漏.我将代码更改为:
FileOutputStream outStream = new FileOutputStream(file);
try
{
FileChannel out = outStream.getChannel();
...Do something with out...
}
finally
{
outStream.close();
}
Run Code Online (Sandbox Code Playgroud)
警告现在消失了,但现在我不确定是否必须调用FileChannel的close方法.所以它可能看起来像这样:
FileOutputStream outStream = new FileOutputStream(file);
try
{
FileChannel out = outStream.getChannel();
try
{
...Do something with out...
}
finally
{
out.close();
}
}
finally
{
outStream.close();
}
Run Code Online (Sandbox Code Playgroud)
如果使用文件输入通道和文件输出通道,那么这将导致四个嵌套的try ... finally块,并且它们都会变得臃肿.
你怎么看?是否真的有必要关闭频道和流?或者正在关闭足够的流?