Specified VM install not found: type Standard VM, name jdk1.6...

本文介绍如何在Eclipse中正确配置Ant以使用与工作空间相同的JRE进行构建任务。通过这种方式可以避免不同JRE环境导致的问题。
来源:http://stackoverflow.com/questions/7068172/eclipse-3-7-ant-java-1-7

In Eclipse, click the ant file -- Run As -- External Tools Configuration and click on the JRE tab.

Select "Run in the same JRE as the workspace"
<think>我们有两个问题需要解决:1.无法找到org.apache.hive:hive-jdbc:pom:8.37.32.无法找到jdk.tools:jdk.tools:jar:1.6首先,针对第一个问题,根据之前的分析,Hive并没有8.37.3这个版本,所以我们需要使用正确的版本。其次,第二个问题,jdk.tools:jdk.tools:jar:1.6JDK中的tools.jar,在Maven仓库中并不直接提供,需要特殊处理。下面分别给出解决方案:一、解决org.apache.hive:hive-jdbc依赖问题步骤:1.确认Hive版本:检查你使用的Hive服务器版本,然后选择对应的hive-jdbc版本。常见的版本有3.1.3,2.3.9等。2.在pom.xml中使用正确的版本,例如:```xml<dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>3.1.3</version></dependency>```3.如果中央仓库没有,添加Apache仓库:```xml<repositories><repository><id>apache-releases</id><name>ApacheReleases</name><url>https://repository.apache.org/content/repositories/releases</url></repository></repositories>```二、解决jdk.tools:jdk.tools:jar:1.6问题这个依赖实际上对应的是JDK安装目录下的lib/tools.jar。在Maven中,我们通常通过以下方式引入:1.使用system作用域(scope)来指定本地JDK的tools.jar路径(注意:这种方式要求每个构建环境的JDK路径相同,不够灵活,一般只用于开发环境)```xml<dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.6</version><scope>system</scope><systemPath>${java.home}/../lib/tools.jar</systemPath></dependency>```但是,请注意,这里我们假设JDK的安装路径是标准的,并且版本为1.6。实际上,现在大多数环境使用JDK8或更高版本,而tools.jar在JDK9及以上已经被移除(模块化了)。所以,如果使用JDK8及以上,可以这样写:```xml<dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version><!--根据实际JDK版本调整--><scope>system</scope><systemPath>${java.home}/../lib/tools.jar</systemPath></dependency>```2.更推荐的方式是:避免直接依赖tools.jar,因为通常我们并不需要直接使用它。如果某个第三方库依赖了它,可以考虑排除掉,或者查看是否有其他替代方案。3.如果必须使用且希望跨环境,可以考虑将tools.jar安装到本地仓库或私有仓库,然后使用普通依赖方式。安装到本地仓库的命令(需要先找到本地JDK中的tools.jar):```bashmvninstall:install-file-Dfile=$JAVA_HOME/lib/tools.jar-DgroupId=jdk.tools-DartifactId=jdk.tools-Dversion=1.8-Dpackaging=jar```然后在pom.xml中:```xml<dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version></dependency>```注意:在JDK9及以上,由于模块化,tools.jar不再存在,因此上述方法只适用于JDK8及以下。对于高版本JDK,需要检查依赖tools.jar的库是否已经支持JDK9+,或者寻找替代方案。三、综合示例假设我们使用Hive3.1.3和JDK8,pom.xml的配置片段如下:```xml<dependencies><!--HiveJDBC--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>3.1.3</version></dependency><!--JDKtools.jarforJDK8--><dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version><scope>system</scope><systemPath>${java.home}/../lib/tools.jar</systemPath></dependency></dependencies><repositories><repository><id>apache-releases</id><name>ApacheReleases</name><url>https://repository.apache.org/content/repositories/releases</url></repository></repositories>```四、注意事项1.如果使用JDK11及以上,则不需要tools.jar,因为该jar包在JDK9开始已经被移除。如果项目依赖的某个库需要tools.jar,那么该库很可能不支持JDK9+,需要升级该库的版本或寻找替代库。2.如果Hive版本与Hadoop版本有依赖关系,请确保HiveJDBC依赖的Hadoop版本与集群一致,否则可能出现兼容性问题。五、常见问题排查1.如果添加了Apache仓库后仍然无法下载Hive依赖,可以手动到仓库(https://repository.apache.org/content/repositories/releases/org/apache/hive/hive-jdbc/)查看是否有对应版本。2.对于tools.jar,如果构建环境是JDK9+,但项目要求JDK8,可以在pom.xml中指定maven-compiler-plugin的source和target为1.8,并确保使用JDK8进行构建。六、相关问题1.如何解决HiveJDBC连接时的认证问题(如Kerberos)?2.JDK11中如何替代tools.jar?3.Maven中如何管理不同JDK版本的构建?4.HiveJDBC连接URL的常用参数有哪些?希望以上解决方案能帮助您解决问题。</think>### 解决 Maven 依赖缺失问题:`hive-jdbc` 和 `jdk.tools` #### 问题 1:`org.apache.hive:hive-jdbc:pom:8.37.3` 不存在 **原因分析** Hive 官方从未发布过 `8.37.3` 版本(该版本号格式属于 Oracle JDBC 驱动)。正确版本应遵循 Apache 规范(如 `3.1.3`)[^1]。 **解决方案** ```xml <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <!-- 根据 Hive 服务器版本选择 --> <version>3.1.3</version> <!-- Hive 3.x 用 --> <!-- <version>2.3.9</version> --> <!-- Hive 2.x 用 --> </dependency> ``` 添加 Apache 仓库配置: ```xml <repositories> <repository> <id>apache-releases</id> <url>https://repository.apache.org/content/repositories/releases</url> </repository> </repositories> ``` --- #### 问题 2:`jdk.tools:jdk.tools:jar:1.6` 缺失 **原因分析** `tools.jar` 是 JDK 内部工具包,Maven 中央仓库不提供。需通过本地 JDK 路径引用[^2]。 **解决方案** ```xml <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <!-- 与本地 JDK 版本一致 --> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency> ``` > **注意**:JDK 9+ 无需此依赖(已模块化) --- #### 完整配置示例 ```xml <dependencies> <!-- Hive JDBC 依赖 --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.3</version> </dependency> <!-- JDK tools.jar 依赖 --> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency> </dependencies> <repositories> <repository> <id>apache-releases</id> <url>https://repository.apache.org/content/repositories/releases</url> </repository> </repositories> ``` #### 验证步骤 1. **检查版本兼容性**: ```bash mvn dependency:tree | grep 'hive-jdbc' ``` 2. **确认 tools.jar 路径**: ```bash echo ${JAVA_HOME}/lib/tools.jar ``` --- #### 高级场景处理 **场景 1JDK 11+ 环境** 删除 `jdk.tools` 依赖(已模块化),添加: ```xml <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.1</version> <!-- 替代工具包 --> </dependency> ``` **场景 2:依赖冲突** 排除冲突库(如旧版 Jetty): ```xml <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.3</version> <exclusions> <exclusion> <groupId>org.eclipse.jetty.aggregate</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值