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
>
> 孙泽嵩
> 清华大学 软件学院
>
>
>

Reply via email to