@@ -5,7 +5,7 @@ import * as net from 'net';
55import * as os from 'os' ;
66import * as path from 'path' ;
77import { ExtensionContext , version , workspace } from 'vscode' ;
8- import { Executable , ExecutableOptions , StreamInfo } from 'vscode-languageclient/node' ;
8+ import { Executable , ExecutableOptions , StreamInfo , TransportKind } from 'vscode-languageclient/node' ;
99import { logger } from './log' ;
1010import { addLombokParam , isLombokSupportEnabled } from './lombokSupport' ;
1111import { RequirementsData } from './requirements' ;
@@ -48,6 +48,21 @@ export function prepareExecutable(requirements: RequirementsData, workspacePath,
4848 executable . options = options ;
4949 executable . command = path . resolve ( `${ requirements . tooling_jre } /bin/java` ) ;
5050 executable . args = prepareParams ( requirements , workspacePath , context , isSyntaxServer ) ;
51+ const transportKind = getJavaConfiguration ( ) . get ( 'transport' ) ;
52+ switch ( transportKind ) {
53+ case 'pipe' :
54+ executable . transport = TransportKind . pipe ;
55+ break ;
56+ case 'stdio' :
57+ executable . transport = TransportKind . stdio ;
58+ break ;
59+ default :
60+ const isInsider : boolean = version . includes ( "insider" ) ;
61+ const javaExtVersion = context . extension . packageJSON ?. version ;
62+ const isPreReleaseVersion = / ^ \d + \. \d + \. \d { 10 } / . test ( javaExtVersion ) ;
63+ executable . transport = ( isInsider || isPreReleaseVersion ) ? TransportKind . pipe : TransportKind . stdio ;
64+ break ;
65+ }
5166 logger . info ( `Starting Java server with: ${ executable . command } ${ executable . args . join ( ' ' ) } ` ) ;
5267 return executable ;
5368}
0 commit comments