Hi, JVM loads a set of jars according to the order of users declaration.
If you set classpath=log4j-1.1.jar : log4j-0.9.jar : log4j-1.2.jar, then JVM will load log4-1.1.jar first. If there are duplicate files among the 3 jars, then only the first one will be loaded into JVM. That is why we must set it as classpath= %iotdb classpath% : %system classpath%. Though for current version of IoTDB, you can just set classpath= %iotdb classpath%, I'd like to do not cover system classpath, because it is more general. Best, ----------------------------------- Xiangdong Huang School of Software, Tsinghua University 黄向东 清华大学 软件学院 JT <[email protected]> 于2019年9月19日周四 下午2:01写道: > Hi, > > Should we really include the original CLASSPATH? We may get ourselves into > trouble if it contains some incompatible or conflict dependencies with > those in IoTDB. For example, if the user has put an old Log4j into > CLASSPATH, the system log may fail. > > Tian Jiang > > 发送自 Windows 10 版邮件应用 > > 发件人: Lei Rui > 发送时间: 2019年9月19日 13:42 > 收件人: [email protected] > 主题: Re: Resolve "input line is too long" in windows os > > Hi, > > > Ok then it looks like `start-server.bat` needs changing because now it is > > > ``` > @REM ***** CLASSPATH library setting ***** > @REM Ensure that any user defined CLASSPATH variables are not used on > startup > set CLASSPATH="%IOTDB_HOME%\lib" > @REM For each jar in the IOTDB_HOME lib directory call append to build the > CLASSPATH variable. > set CLASSPATH=%CLASSPATH%;"%IOTDB_HOME%\lib\*" > set CLASSPATH=%CLASSPATH%;iotdb.IoTDB > goto okClasspath > ``` > > > Lei Rui > On 9/19/2019 13:33,Xiangdong Huang<[email protected]> wrote: > Hi, > > set CLASSPATH=%CLASSPATH%;%IOTDB_CLI_HOME%\lib\* > > Normally, the better way is : > > set CLASSPATH=%IOTDB_CLI_HOME%\lib\*;%CLASSPATH% > > It means load %IOTDB_CLI_HOME%\lib\* first, and then %CLASSPATH% that the > system original having. > > Best, > ----------------------------------- > Xiangdong Huang > School of Software, Tsinghua University > > 黄向东 > 清华大学 软件学院 > > > Jialin Qiao <[email protected]> 于2019年9月5日周四 上午9:21写道: > > > Ha....not iotdb-env.sh, it is in the start-client.bat, import-csv.bat and > export-csv.bat... > > Best > -- > Jialin Qiao > School of Software, Tsinghua University > > 乔嘉林 > 清华大学 软件学院 > > -----原始邮件----- > 发件人: "Jialin Qiao" <[email protected]> > 发送时间: 2019-09-05 09:17:45 (星期四) > 收件人: [email protected] > 抄送: > 主题: Re: Resolve "input line is too long" in windows os > > Hi, > > Ok, I found this in the current iotdb-env.sh: > > ``` > @REM Ensure that any user defined CLASSPATH variables are not used on > startup > set CLASSPATH="" > ``` > > Best, > -- > Jialin Qiao > School of Software, Tsinghua University > > 乔嘉林 > 清华大学 软件学院 > > -----原始邮件----- > 发件人: "Tian Jiang" <[email protected]> > 发送时间: 2019-09-05 09:05:29 (星期四) > 收件人: "[email protected]" <[email protected]> > 抄送: "[email protected]" <[email protected]> > 主题: Re: Resolve "input line is too long" in windows os > > Hi, > > > I think it is fine, since we are not sure what %CLASSPATH% would be > originally, if we depend on some unknown external dependencies, things may > get uncontrollable. > > > Tian Jiang > > > | | > Tian Jiang > | > | > [email protected] > | > 签名由网易邮箱大师定制 > On 9/5/2019 08:55,Jialin Qiao<[email protected]> wrote: > Hi Zesong, > > Thanks for sharing your experience :) > > I just have a question about this line: > > set CLASSPATH=%IOTDB_CLI_HOME%\lib\* > > Should it be the following command? > > set CLASSPATH=%CLASSPATH%;%IOTDB_CLI_HOME%\lib\* > > Best, > -- > Jialin Qiao > School of Software, Tsinghua University > > 乔嘉林 > 清华大学 软件学院 > > -----原始邮件----- > 发件人: "Zesong Sun" <[email protected]> > 发送时间: 2019-09-04 22:20:54 (星期三) > 收件人: dev <[email protected]> > 抄送: > 主题: Resolve "input line is too long" in windows os > > Hi, > > > > > Recently I have encountered a problem when updating maven dependency > in tsfile module: when starting client in windows os, I will get an error: > "The input line is too long." > > > It is resulted by limitation of the maximum length of the string that > can be used at the command line: "On computers running Microsoft Windows XP > or later, the maximum length of the string that you can use at the command > prompt is 8191 characters. On computers running Microsoft Windows 2000 or > Windows NT 4.0, the maximum length of the string that you can use at the > command prompt is 2047 characters. This limitation applies to the command > line, individual environment variables (such as the PATH variable) that are > inherited by other processes, and all environment variable expansions. If > you use Command Prompt to run batch files, this limitation also applies to > batch file processing.” [1] > > > With the suggestion of @Jialin Qiao, I reduced the dependency (from > hadoop-client to hadoop-common), and local tests are all passed. However, > the tests on Travis CI still failed. > > > Thanks to @Tian Jiang, I changed the set CLASSPATH statement in .bat > file of starting client: > > > Previous: > ``` > for %%i in ("%IOTDB_CLI_HOME%\lib\*.jar") do call :append "%%i" > goto okClasspath > > > :append > set CLASSPATH=%CLASSPATH%;%1 > goto :eof > > ``` > > > And now: > ``` > set CLASSPATH=%IOTDB_CLI_HOME%\lib\* > ``` > > > This avoid too long input line of CLASSPATH, which resolves the > problem. > > > The error confused me for really a long time... And I think maybe this > solution will help you in the future. If you have any other suggestions and > ideas, welcome to discuss with us : ) > > > > > [1] > > https://support.microsoft.com/en-us/help/830473/command-prompt-cmd-exe-command-line-string-limitation > > > > > > BR, > ------------------ > Zesong Sun > School of Software, Tsinghua University > > 孙泽嵩 > 清华大学 软件学院 > > >
