Unable to guess FieldBridge for 字段名

本文介绍如何使用Hibernate Search框架存储byte[]类型的字段到索引中,并提供了一个自定义的桥接类MyFieldBridge实现将byte数组转换为字符串的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://stackoverflow.com/questions/7796616/hibernate-search-storing-byte-in-index[/url]

找到这个字段的定义, 或者getter方法.

You will need a field bridge.

For example:
@Field(index = Index.NO, store = Store.YES)
@FieldBridge(impl = MyFieldBridge.class)
private byte[] file;


//The file bridge
public class MyFieldBridge implements StringBridge {

@Override
public String objectToString(final Object object) {

byte[] file = (byte[]) object;

return MagicFileUtil.getTextContent(file)
}
}


由于没有找到这个MagicFileUtil类,所以自己转换byte[]==>String
[url]http://bbs.youkuaiyun.com/topics/297981[/url]
MyFieldBridge.java改成
import org.hibernate.search.bridge.StringBridge;
/**
* Created with IntelliJ IDEA.
* User: pandy
* Date: 13-7-3
* Time: 下午2:02
* To change this template use File | Settings | File Templates.
*/
public class MyFieldBridge implements StringBridge {

@Override
public String objectToString(final Object object) {

byte[] file = (byte[]) object;

//return MagicFileUtil.getTextContent(file);
return String.valueOf(file);
}
}


[color=red][b]如果可以, 最好到org.hibernate.search.bridge.builtin去寻找相应的Bridge类.[/b][/color] 如果不行, 看就情况对字段的特殊类型做实现, 比如实现TwoWayStringBridge.
<think>好的,用户现在遇到了在运行lmbench的make命令时出现“unable to guess system type”的错误,需要帮助解决。我之前已经帮他处理过lmbench的config无响应问题,现在这个新问题可能也是编译环境的问题。首先,我需要理解这个错误的原因。通常,当构建系统无法自动检测到主机类型时,会出现这个错误。这可能是因为缺少必要的配置脚本或者构建工具的问题。 用户可能已经按照之前的指导安装了依赖,但可能仍然缺少某些特定的工具,比如autoconf、automake或libtool。这些工具在生成配置脚本时是必需的。另外,用户可能在解压源码包时没有保留原始的目录结构,或者源码包本身有问题,导致必要的配置文件丢失。 接下来,我应该考虑系统架构的问题。如果用户使用的是非主流的系统架构,或者交叉编译环境,可能需要手动指定系统类型。不过这种情况可能较少,但需要检查。此外,用户可能没有正确设置环境变量,如CC或CFLAGS,导致configure脚本无法识别系统类型。 我需要分步骤来思考解决方案:首先检查是否缺少构建工具,然后确保源码完整,接着尝试手动生成配置脚本,如果不行,再检查系统类型并手动指定。同时,考虑更新或重新安装libtool,因为之前的问题中提到了libtool-bin的安装,可能这里也需要。另外,查看错误日志可以帮助定位问题,但用户可能需要指导如何获取日志。 用户可能不太熟悉如何手动生成configure脚本,或者如何指定系统类型,因此需要给出具体的命令示例。另外,用户可能遇到权限问题,或者路径问题,需要提醒他们检查目录是否正确,并赋予执行权限。最后,如果所有方法都失败,可能需要建议用户联系维护者,提供详细的系统信息以便进一步帮助。</think>以下是针对 **lmbench运行`make`提示`unable to guess system type`错误** 的详细解决方案: --- ### **一、问题根源分析** 此错误通常由以下原因导致: 1. **缺失系统类型检测工具**:构建系统无法通过`config.guess`或`config.sub`脚本识别当前平台架构。 2. **源码包不完整**:构建所需的配置文件(如`configure`)未正确生成或缺失。 3. **交叉编译环境未配置**:未指定目标平台类型(如ARM、MIPS等)。 --- ### **二、分步解决方案** #### 1. **安装或更新系统检测工具** - 修复`config.guess`和`config.sub`脚本缺失问题: ```bash sudo apt install automake autoconf libtool ``` - 手动更新配置文件(适用于旧版lmbench): ```bash wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess' wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub' cp config.guess config.sub lmbench/scripts/ # 替换到lmbench的scripts目录 ``` #### 2. **生成完整的构建配置** - 手动运行`autoreconf`生成`configure`脚本: ```bash cd lmbench autoreconf -f -i # 重新生成配置系统 ``` - 若失败,尝试强制生成: ```bash aclocal && autoconf && automake --add-missing ``` #### 3. **显式指定系统类型** - 通过`--build`参数强制指定架构(需查询当前系统类型): ```bash # 查看本机系统类型 dpkg-architecture -qDEB_BUILD_GNU_TYPE # 输出示例:x86_64-linux-gnu # 编译时指定类型(替换为实际值) ./configure --build=x86_64-linux-gnu make ``` #### 4. **处理特殊架构场景** - **ARM设备(如树莓派)**: ```bash ./configure --build=arm-linux-gnueabihf ``` - **MIPS/PPC等非主流架构**: 需安装对应工具链: ```bash sudo apt install gcc-mips-linux-gnu export CC=mips-linux-gnu-gcc ./configure --build=mips-linux-gnu ``` --- ### **三、验证与调试** #### 1. **检查配置文件完整性** ```bash ls -l scripts/config.guess scripts/config.sub # 确认文件存在且非空 file scripts/config.guess # 应显示可执行脚本 ``` #### 2. **捕获详细错误日志** ```bash make clean make V=1 2>&1 | tee build.log # 保存完整编译日志 grep -i "error" build.log # 定位关键错误 ``` --- ### **四、替代方案** #### 1. **直接修改Makefile** 在`src/Makefile`中硬编码系统类型(不推荐,仅应急): ```makefile # 在文件开头添加 SYS = linux ``` #### 2. **使用预编译二进制包** 绕过源码编译(适用于Debian/Ubuntu): ```bash sudo apt install lmbench ``` --- ### **附:常见系统类型对照表** | 架构 | `--build`参数示例 | |--------------|-------------------------| | x86_64 | `x86_64-linux-gnu` | | ARMv7 | `arm-linux-gnueabihf` | | ARMv8 | `aarch64-linux-gnu` | | MIPS | `mips-linux-gnu` | --- 通过以上步骤,可系统性解决`unable to guess system type`错误。若问题仍存在,建议提供`build.log`中的具体错误片段以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值