搜索引擎第一步(Java之JDK,JRE区别)

简介

起因:想搭建一个搜索引擎

论文书写的水平太次,而想写好论文的第一关键就是借鉴别人写的内容,然后模仿,创新。
于是乎,平常当需要表达某一个意思的时候,我一般首先将关键词诉诸于有道,然后找到解释以及例句,但是有道给的例句并不那么学术化,与我平常要写的论文还是有些差距的。于是乎,我一个简单大胆的想法萌发了,将电脑中读过的经典的论文的pdf文件放到一起,构建一套索引,然后支持关键词搜索句子,段落等,这样当需要表达某一个意思的时候,只需要将关键词输入到查询框中,然后别人的优美的句子就刷刷的来了,岂不妙哉!

前期准备:文档索引构建+web界面展示

首先需要一个基本的将文档构建倒排索引的内核,以及一个web界面的包装,以使能够直接访问本地的server。当输入关键词,搜索的结果就会自动呈现出来。 随便搜索了一下采用了lucene+solr的结构。github有源代码。 lucene用于索引的构建,solr用于web界面的展示

编译lucene+solr

文档很简单,直接ant compile编译。编译的过程漫长而又痛苦,报了不同的错误。
1. **错误1:**java版本要求至少1.8.于是下载java se8(标准版),然后安装jdk和jre,并进行了Path和JAVA_HOME的配置
2. **错误2:**javac 无效的标识 -profile。面对这个错误,本人完全是懵逼的,经过一番处理,发现是ClassPath环境变量忘记配置的问题(配置好ClassPath之后,这个错误就没了)。作为一个爱钻研的坏孩子,这些环境变量的配置到底有什么关联和用途呢?对它的一些探索,引出了本文的主题Java之JDK,JRE区别。

JAVA

当安装完毕java之后,会在java目录下存在两个子目录(jdk和jre目录)。例如我的java se8的两个目录为: jdk1.8.0_121 和 jre1.8.0_121

JDK目录: Java Development Kit

顾名思义,jdk也就是java开发工具包,就是用来开发java程序的。如果你需要写java程序,那么这个目录是必须需要的,它里面进一步有bin, jre和lib目录。 bin目录是一些编译调试工具,例如javac, jdb等,jre目录被称作内部java运行环境,它是服务于bin目录的,lib目录比较重要的有dt.jar和tools.jar。

JRE目录: Java Runtime Environment

jre也就是java运行时环境,相比于上面的jdk目录下的内部jre,这个目录叫做公共java运行环境,它用于运行java程序。 当你有一个java程序需要运行,那么你需要这个目录。 它里面进一步有bin和lib目录,bin目录可以认为是jvm(java虚拟机),lib目录是服务于bin目录的。 当编译完毕的java字节码需要运行的时候,会被载入到jvm中解释成机器语言并运行。

配置

  1. JAVA_HOME: 配置成jdk的目录,即 java\jdk1.8.0_121
  2. JRE_HOME: 配置成公共jre的目录: 即java\jre1.8.0_121
  3. PATH: 配置常用的java相关编译执行命令:%JRE_HOME%\bin;%JAVA_HOME%\bin
  4. Classpath: %JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JRE_HOME%\lib

上面的配置虽然正确,但是可能有冗余,我也不清楚真正的标准是如何的。 例如java.exe命令(运行java程序)按道理应该使用jre目录的,而不应该使用jdk目录的,而jdk目录的似乎也可以工作,非常奇怪,但是时间有限,我也不再细究了。官方的目录说明: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jdkfiles.html

引用一句话:
总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

猜你喜欢

转载自blog.csdn.net/lipeng08/article/details/70143620