Hi,

+1 for not cover system classpath.

In our start shell, you will find we always clear classpath before adding ours:

CLASSPATH=""
for f in ${IOTDB_HOME}/lib/*.jar; do
  CLASSPATH=${CLASSPATH}":"$f
done

Best,
--
Jialin Qiao
School of Software, Tsinghua University

乔嘉林
清华大学 软件学院

> -----原始邮件-----
> 发件人: "Xiangdong Huang" <saint...@gmail.com>
> 发送时间: 2019-09-19 14:19:49 (星期四)
> 收件人: dev@iotdb.apache.org
> 抄送: 
> 主题: Re: Resolve "input line is too long" in windows os
> 
> 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 <jt2594...@163.com> 于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
> > 收件人: dev@iotdb.apache.org
> > 主题: 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<saint...@gmail.com> 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 <qj...@mails.tsinghua.edu.cn> 于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" <qj...@mails.tsinghua.edu.cn>
> > 发送时间: 2019-09-05 09:17:45 (星期四)
> > 收件人: dev@iotdb.apache.org
> > 抄送:
> > 主题: 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" <jt2594...@163.com>
> > 发送时间: 2019-09-05 09:05:29 (星期四)
> > 收件人: "dev@iotdb.apache.org" <dev@iotdb.apache.org>
> > 抄送: "dev@iotdb.apache.org" <dev@iotdb.apache.org>
> > 主题: 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
> > |
> > |
> > jt2594...@163.com
> > |
> > 签名由网易邮箱大师定制
> > On 9/5/2019 08:55,Jialin Qiao<qj...@mails.tsinghua.edu.cn> 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" <samperson_...@foxmail.com>
> > 发送时间: 2019-09-04 22:20:54 (星期三)
> > 收件人: dev <dev@iotdb.apache.org>
> > 抄送:
> > 主题: 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