Skip to content

遇到的问题及解决方案

参考博文入门必备!iotdb 源码debug方法!

xxx软件包在maven.aliyun.com上找不到

不使用maven镜像进行下载。但下载速度会很慢。

IoTDB在1.2版本之后server模块进行了重构,server模块启动不再是IoTDB.java

启动入口由原来的IoTDB.java变成了ConfigNode.java和DataNode.java。先启动ConfigNode再启动DataNode即可。

ConfigNode位于iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java

DataNode位于iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/DataNode.java

启动DataNode时报错Usage: <-s|-r> [-D{} <configure folder>]

​ 未指定DataNode模式,右键运行按钮,点击修改配置。如图所示。 image-20240623024606166

​ 然后在程序实参添加-s,并再次启动。

image-20240623024808817

启动DataNode会抛出异常

Exception in thread "main" java.lang.ExceptionInInitializerError
	at org.apache.iotdb.commons.client.sync.SyncThriftClientWithErrorHandler.newErrorHandler(SyncThriftClientWithErrorHandler.java:41)
	at org.apache.iotdb.db.protocol.client.ConfigNodeClient$Factory.makeObject(ConfigNodeClient.java:1145)
	at org.apache.iotdb.db.protocol.client.ConfigNodeClient$Factory.makeObject(ConfigNodeClient.java:1127)
	at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:780)
	at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:439)
	at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:350)
	at org.apache.iotdb.commons.client.ClientManager.borrowClient(ClientManager.java:53)
	at org.apache.iotdb.db.service.DataNode.pullAndCheckSystemConfigurations(DataNode.java:282)
	at org.apache.iotdb.db.service.DataNode.doAddNode(DataNode.java:207)
	at org.apache.iotdb.db.service.DataNodeServerCommandLine.run(DataNodeServerCommandLine.java:81)
	at org.apache.iotdb.commons.ServerCommandLine.doMain(ServerCommandLine.java:58)
	at org.apache.iotdb.db.service.DataNode.main(DataNode.java:187)
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @7403c468
	at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:464)
	at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:339)
	at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
	at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
	at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
	at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
	at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
	at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:294)
	at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
	at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
	at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
	at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
	... 12 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @7403c468
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at net.sf.cglib.core.ReflectUtils$1.run(ReflectUtils.java:61)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at net.sf.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:52)
	at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:243)
	at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
	at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:332)
	... 25 more

方法如下:

  1. 打开编辑配置并点击修改选项。

image-20240623025038560

  1. 选择添加虚拟机选项

image-20240623025114779

  1. 添加虚拟机参数
--add-opens java.base/java.lang=ALL-UNNAMED
  1. 再次启动即可

务必先启动ConfigNode再启动DataNode

Cli启动报错

Cli启动文件位于iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java

需要在运行参数上加上-h 127.0.0.1 -p 6667 -u root -pw root。指定启动的host、端口、用户名和密码。

具体如下图。

image-20240623030717466