非root用户在conda下安装SnpEff(报错:Exception in thread "main" java.lang.UnsupportedClassVersionError: org/...

snpeff可以用于snp 和indel 文件的拆分,也可以用于注释这俩文件。

conda下载snpeff

conda activate python27
conda install -y snpeff #但其只下载到conda的pkgs文件夹,需要自己再软连接一下到conda的bin文件夹

Windows下下载jdk12,

conda下单独下载Java是困难的,那就换Windows,登录oracle下一个
https://link.zhihu.com/?target=https%3A//www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html

ssh上传到服务器,Linux下解压“”

tar -zxvf jdk-12.0.2_linux-x64_bin.tar.gz

如果在没有jdk12的conda下唤醒snpeff,会报错

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/snpeff/SnpEff has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
 at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
 at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
 at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

解决方法

加入jdk12 和snpeff 到环境变量path

 echo export PATH="/home/u20111230014/workspace/software/jdk-12.0.2:$PATH" >> ~/.bashrc

 echo export PATH="/home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0:$PATH" >> ~/.bashrc

软连接到conda的bin 文件夹里面

ln -s /home/u20111230014/workspace/software/jdk-12.0.2/bin jdk12.02
ln -s /home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0/snpEff snpeff

jdk12应该写进哪里

root一般直接写进etc/profile, 非root用户不能修改etc/profile,只能将Jdk12写进 ~/.bashrc!!!

按顺序写进 ~/.bashrc
PS:一定要先写jdk, 再写snpeff, 因为snpeff需要jdk12来启动!!!

set java environment
JAVA_HOME=/home/u20111230014/workspace/software/jdk-12.0.2
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASS_PATH PATH

export JAVA_HOME="/home/u20111230014/workspace/software/jdk-12.0.2"
export PATH=${JAVA_HOME}/bin:$PATH
export LD_LIBRARY_PATH=/home/u20111230014/workspace/software/jdk-12.0.2/lib/server:$LD_LIBRARY_PATH

export PATH=/home/u20111230014/workspace/software/jdk-12.0.2:/home/u20111230014/miniconda3/envs/python27/bin:/home/u20111230014/workspace/software/gatk-4.2.5.0:/home/u20111230014/miniconda3/conda/bin:/home/u20111230014/miniconda3/bin:/opt/app/r/4.1.1/bin:/usr/local/bin:/opt/app/r/4.1.1/bin:/home/public/software/miniconda2/bin:/opt/app/anaconda3/bin:/opt/app/conda/bin:/home/public/software/wfz_scripts:/opt/app/conda/bin:/opt/app/r/4.1.1/bin:/opt/app/spack/bin:/opt/app/spack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/u20111230014/.local/bin:/home/u20111230014/bin

export PATH=/home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0:/home/u20111230014/miniconda3/envs/python27/bin:/home/u20111230014/miniconda3/pkgs
/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0:/home/u20111230014/miniconda3/envs/python27/bin:/home/u20111230014/workspace/software/gatk-4.2.5.0:/home/u20111230014/miniconda3
/condabin:/home/u20111230014/miniconda3/bin:/opt/app/r/4.1.1/bin:/usr/local/bin:/opt/app/r/4.1.1/bin:/home/public/software/miniconda2/bin:/opt/app/anaconda3/bin:/opt/app/
conda/bin:/home/public/software/wfz_scripts:/opt/app/conda/bin:/opt/app/r/4.1.1/bin:/opt/app/spack/bin:/opt/app/spack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi
n:/sbin:/bin:/home/u20111230014/.local/bin:/home/u20111230014/bin:/home/u20111230014/.local/bin:/home/u20111230014/bin

source ~/.bashrc 一下 搞定!

(python27) [u20111230014@cpu15 bin]$ snpeff
SnpEff version SnpEff 5.1 (build 2022-01-21 06:23), by Pablo Cingolani
Usage: snpEff [command] [options] [files]

Run 'java -jar snpEff.jar command' for help on each specific command

Available commands: 
        [eff|ann]                    : Annotate variants / calculate effects (you can use either 'ann' or 'eff', they mean the same). Default: ann (no command or 'ann').
        build                        : Build a SnpEff database.
        buildNextProt                : Build a SnpEff for NextProt (using NextProt's XML files).
        cds                          : Compare CDS sequences calculated form a SnpEff database to the one in a FASTA file. Used for checking databases correctness.
        closest                      : Annotate the closest genomic region.
        count                        : Count how many intervals (from a BAM, BED or VCF file) overlap with each genomic interval.
        databases                    : Show currently available databases (from local config file).
        download                     : Download a SnpEff database.
        dump                         : Dump to STDOUT a SnpEff database (mostly used for debugging).
        genes2bed                    : Create a bed file from a genes list.
        len                          : Calculate total genomic length for each marker type.
        pdb                          : Build interaction database (based on PDB data).
        protein                      : Compare protein sequences calculated form a SnpEff database to the one in a FASTA file. Used for checking databases correctness.
        seq                          : Show sequence (from command line) translation.
        show                         : Show a text representation of genes or transcripts coordiantes, DNA sequence and protein sequence.
        translocReport               : Create a translocations report (from VCF file).

Generic options:
        -c , -config                 : Specify config file
        -configOption name=value     : Override a config file option
        -d , -debug                  : Debug mode (very verbose).
        -dataDir <path>              : Override data_dir parameter from config file.
        -download                    : Download a SnpEff database, if not available locally. Default: true
        -nodownload                  : Do not download a SnpEff database, if not available locally.
        -h , -help                   : Show this help and exit
        -noLog                       : Do not report usage statistics to server
        -q , -quiet                  : Quiet mode (do not show any messages or errors)
        -v , -verbose                : Verbose mode
        -version                     : Show version number and exit

Database options:
        -canon                       : Only use canonical transcripts.
        -canonList <file>            : Only use canonical transcripts, replace some transcripts using the 'gene_id       transcript_id' entries in <file>.
        -interaction                 : Annotate using inteactions (requires interaciton database). Default: true
        -interval <file>             : Use a custom intervals in TXT/BED/BigBed/VCF/GFF file (you may use this option many times)
        -maxTSL <TSL_number>         : Only use transcripts having Transcript Support Level lower than <TSL_number>.
        -motif                       : Annotate using motifs (requires Motif database). Default: true
        -nextProt                    : Annotate using NextProt (requires NextProt database).
        -noGenome                    : Do not load any genomic database (e.g. annotate using custom files).
        -noExpandIUB                 : Disable IUB code expansion in input variants
        -noInteraction               : Disable inteaction annotations
        -noMotif                     : Disable motif annotations.
        -noNextProt                  : Disable NextProt annotations.
        -onlyReg                     : Only use regulation tracks.
        -onlyProtein                 : Only use protein coding transcripts. Default: false
        -onlyTr <file.txt>           : Only use the transcripts in this file. Format: One transcript ID per line.
        -reg <name>                  : Regulation track to use (this option can be used add several times).
        -ss , -spliceSiteSize <int>  : Set size for splice sites (donor and acceptor) in bases. Default: 2
        -spliceRegionExonSize <int>  : Set size for splice site region within exons. Default: 3 bases
        -spliceRegionIntronMin <int> : Set minimum number of bases for splice site region within intron. Default: 3 bases
        -spliceRegionIntronMax <int> : Set maximum number of bases for splice site region within intron. Default: 8 bases
        -strict                      : Only use 'validated' transcripts (i.e. sequence has been checked). Default: false
        -ud , -upDownStreamLen <int> : Set upstream downstream interval length (in bases)

后记:
可能不是root,不能写进profile的原因,想在conda特定环境下唤醒snpEff,最好在conda下开一个环境给最高版本的Java

conda create -n java12
conda activate java12
conda install openjdk=12.0.2    # 直接在conda下安装openjdk=12.0.2,总下载不了

##换一种方式,这个rjava下载完是版本11.0.9.1
conda install -c r r-rjava
(java12) [u20111230014@cpu15 snpeff-5.1-1]$ java -version
openjdk version "11.0.9.1-internal" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1-internal+0-adhoc..src)
OpenJDK 64-Bit Server VM (build 11.0.9.1-internal+0-adhoc..src, mixed mode)
##足够能带动snpEff就行
conda install -y snpeff   ##下载后启动snpEff 
(java12) [u20111230014@cpu15 snpeff-5.1-1]$ whereis snpEff
snpEff: /home/u20111230014/miniconda3/envs/java12/bin/snpEff /home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0/snpEff /home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0/snpEff.config /home/u20111230014/miniconda3/pkgs/snpeff-5.1-hdfd78af_0/share/snpeff-5.1-0/snpEff.jar /home/u20111230014/miniconda3/envs/python27/bin/snpEff

成功!
参考:https://zhuanlan.zhihu.com/p/476561285

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容