• thrift编译java的问题-(安装thrift0.8.0成功-编译mapkeeper.java成功)


    上一次帖子说了thrift编译java出现错误,由于只用到cpp版的,就将此略过。但是老版本的ycsb不是很好用,于是决定以locall的方式编译mapkeeper供最新版ycsb使用。目前根据

    https://github.com/brianfrankcooper/YCSB/pull/262/files

    https://github.com/baonguyen84/YCSB

    的说法,在mapkeeper下的thrift中编译出的jar文件拷贝安装到(换名,上面第二个链接)ycsb下就可以用了。

    因此,本帖进行对编译java版的错误进行解决。

    1. 怀疑是thrift版本的问题。安装的版本是0.9.2,估计需要0.8.0版本。

    首先,ll /usr/local/cuda-8.0/lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib/nvidia-375 /usr/lib32/nvidia-375 /lib32 /usr/lib32 /lib /usr/lib |grep thrift

    发现有很多thrift包,而且很多是0.9.2版本的,这些是手动安装的,在0.9.2版本下进行make uninstall后删除了大部分,并且再次在mapkeeper thrift下make时就出现了make: /usr/local/bin/thrift: Command not found 的错误。

    然后在手动把其他的删除掉(目录 /usr/local/lib)

    2. 装0.8.0的问题

    首先是 LoadError: cannot load such file — spec/rake/spectask

    /home/lds/mapkeeper/thrift-0.8.0/lib/rb/Rakefile:24:in `<top (required)>'

    根据 https://stackoverflow.com/questions/25622488/loaderror-cannot-load-such-file-spec-rake-spectask-fedena 将  Rakefile 进行了修改

    仍然是该错误,只是  spec/rake/spectask 换成了  rspec/core/rake_task

    再根据 https://stackoverflow.com/questions/30114733/loaderror-cannot-load-such-file-rspec-core-rake-task 

    After : sudo gem install bundler

    I created a Gemfile with:

    gem 'rake'
    gem 'rspec'
    gem 'kramdown'
    

    and did bundle install . Now I dont get the error.

    这个操作要根据 https://stackoverflow.com/questions/30358612/how-to-create-a-gemfile 这个来,也就是随便找个目录创建这个文件,然后在此目录运行  bundle install 。

    成功后,再次make,出现

    rake aborted!
    NameError: uninitialized constant Spec
    Did you mean? RSpec

    3.

    卸载新的rspec,装老的

    https://guleriay2k.wordpress.com/2011/04/26/after-installing-rspec-if-you-get-no-such-file-to-load-specrakespectask/

    https://www.reddit.com/r/ruby/comments/3ess4g/how_to_uninstall_rspec/

    sudo gem install -v=1.3.0 rspec

    还是没有解决

    4. 最终,直接在thrift编译时选择不要ruby

    https://stackoverflow.com/questions/13498721/cannot-build-apache-thrift-due-to-ruby-rake-errors

    $ ./configure --without-ruby
    

     成功解决,成功编译了thrift 0.8.0

    make instal 成功

    5. 此时在mapkeeper下的thrift中make时,会出现uint32_t 未定义等错误,这是生成c++时的错误。

        此时,跳过编译c++,直接进入gen-java进行 mvn clean package

    成功,生成了mapkeeper-1.1-SNAPSHOT.jar  

  • 相关阅读:
    CBV进阶(一)
    uva 11748 Rigging Elections
    uva 11573 Ocean Currents(bfs+优先队列)
    无向图的欧拉路
    poj 3254 Corn Fields
    hdu 1114
    hdu 2639 (第k小的01背包)
    uva 1347 tour
    uva 437 The Tower of Babylon
    uva 1025 A Spy in the Metro(动态规划)
  • 原文地址:https://www.cnblogs.com/bettersky/p/7622129.html
Copyright © 2020-2023  润新知