精选稿件 | 使用 Java 制作 TBtools 插件,保护源码版本 - exe

文摘   2024-10-26 08:32   海南  

前些时间,我在 BioAnno 上遇到一位分享了许多插件的小伙伴。后来发现他主要是用 Java 在做开发,很有意思。一般我用 Java 开发 TBtools 插件我就直接上脚本源码。而这位小伙伴另辟蹊径,搞定了 exe 编译和分析。这个技能和方法很不错,值得学习。为此,我邀请他写了一个教程,希望对感兴趣的朋友也有帮助。

CJ-陈程杰

前期准备

l安装java8-11:https://blog.csdn.net/JunLeon/article/details/122623465

l安装java编辑器IntelliJ IDEA:https://www.jetbrains.com/zh-cn/idea/download/other.html

l安装exe4j:https://blog.csdn.net/MoMozzzzz/article/details/124500607

lJava入门:个人比较推荐《JAVA开发实战经典》

         

 

主要流程

1.IntelliJ IDEA新建java项目,编写脚本,测试

2.导入第三方库(可选)

3.将java项目打包为jar文件

4.使用exe4j将jar文件打包为exe文件

5.使用TBtools的plugin creator将exe文件制作为插件

         

 

Java安装

一般安装java8-java11之间的版本即可,不要安装过高的版本,否则很可能会出现不兼容的问题导致报错,因为高版本的JDK往往对脚本编写方式进行了优化,本意是方便写代码,但这些新的代码编写方式往往无法被之前的版本识别    

         

 

Java编辑器IntelliJ IDEA  

写java脚本推荐使用社区免费版的IntelliJ IDEA,个人感觉非常好用。里面有许多实用的快捷键,并能自动进行脚本检查,发现许多不易察觉的错误并自动给出多种解决方案,大大提高了写代码的效率,还可以很方便的将第三方库导入到自己的项目,并一起打包成.jar文件。感觉就像用pycharm写python脚本一样顺手,但缺点是占用电脑内存比较高。

         

 

安装exe4j

按流程安装即可,需要手动激活一下,网上一搜就可以发现许多公用的密钥

https://blog.csdn.net/MoMozzzzz/article/details/124500607

 

开始操作

1.新建java项目,编写脚本:  

         

 

 

 

   

编写一个简单的得到反向互补序列的脚本:  

个人比较喜欢用kimi辅助编程(https://kimi.moonshot.cn/)

import java.io.*;public class DNAReverseComplementFASTA {    public static void main(String[] args) {        String inputFilePath =args[0]; // 输入FASTA文件路径
        String outputFilePath = args[1]; // 输出FASTA文件路径 try {
// 读取FASTA文件并获取反向互补序列
String reverseComplementFASTA = getReverseComplementFASTA(inputFilePath);
// 将反向互补序列写入新的FASTA文件
writeFile(outputFilePath, reverseComplementFASTA);
System.out.println("Reverse complement FASTA has been written to " + outputFilePath);
} catch (IOException e) {
e.printStackTrace();
}
    } public static String getReverseComplementFASTA(String filePath) throws IOException {
StringBuilder reverseComplementBuilder = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
if (line.startsWith(">")) {
// 如果是描述头,则直接添加到结果中
reverseComplementBuilder.append(line).append("\n");
} else {
// 如果是序列,则计算反向互补序列
String reverseComplement = getReverseComplement(line);
reverseComplementBuilder.append(reverseComplement).append("\n");
}
}
}
return reverseComplementBuilder.toString();
}

public static String getReverseComplement(String dna) {
StringBuilder reverseComplement = new StringBuilder(dna.length());
for (int i = dna.length() - 1; i >= 0; i--) {
char base = dna.charAt(i);
switch (base) {
case 'A':
reverseComplement.append('T');
break;
case 'T':
reverseComplement.append('A');
break;
case 'C':
reverseComplement.append('G');
break;
case 'G':
reverseComplement.append('C');
break;
default:
throw new IllegalArgumentException("Invalid DNA base: " + base);
}
}
return reverseComplement.toString();
}

public static void writeFile(String filePath, String content) throws IOException {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
bw.write(content);
}
}
}



红框中的args[0],args[1]这些就是脚本需要接收的命令行参数,这个在最后制作TBtools插件时会用到。

         

 

导入第三方库(可选)  

先将下载的第三方库(一般是.jar结尾的文件)复制到自己的项目下,在IntelliJ IDEA中右键这个文件,选择最下方的 添加为库 就好了,这里以java中的统计学包apache commons math3为例进行演示:    

         

 

        

将项目打包为jar文件  

脚本写好之后,需要将java项目打包为jar文件,可以参考下面这个链接:

https://blog.csdn.net/weixin_45118229/article/details/134492142

构建好之后会在这个目录看到一个jar文件:    

个人比较喜欢直接在IntelliJ IDEA里面将java项目打包为jar文件,后期熟练了之后只需要鼠标点点点就好了,方便快捷而且不会报错。

         

 

得到jar文件之后,一般我会自己在控制台测试一下(win+R;cmd),确认没有问题之后再将jar文件转为exe可执行文件

         

 

使用exe4j将jar文件打包为exe文件

可以参考下面这个链接:

https://blog.csdn.net/MoMozzzzz/article/details/124500607

但有两个地方要改一下。由于制作的是命令行参数的程序,而不是GUI程序,因此在第4步要选择下图中的console application    

并在第6步设置最低版本为1.8.0:

         

 

顺利得到exe文件之后,一般我也会在命令行界面进行测试,确保没问题之后就可以使用TBTOOLS的plugin creator,将可执行文件整理成TBTOOLS插件了。    


使用TBTOOLS的plugin creator将exe文件制作为插件 

         

 

点击下图这里选择刚刚生成的exe文件:

   

后面就可以按照官网上的一些教程制作自己的个性化插件了:

https://www.yuque.com/cjchen/hirv8i/rzn46gano35stgvo    

生信石头
记录和分享生信学习经验和数据处理技巧
 最新文章