IbcAlpha / IBC

Automation of Interactive Brokers TWS. You can download the latest release here: https://github.com/ibcalpha/ibc/releases/latest
GNU General Public License v3.0
1.03k stars 181 forks source link

TWS not starting via IBC but starts when executed directly #218

Closed thisIsLoading closed 1 year ago

thisIsLoading commented 1 year ago

for some reason tws wont show up when started via ibc.

it works fine when started via start menu but when executed via ibc it just stucks. here's the ibc log:

Starting IBC version 3.16.2 on 2023-06-19 at 02:38:59

Operating system: Linux interactivebrokers 6.3.5-2-MANJARO #1 SMP PREEMPT_DYNAMIC Sun Jun  4 18:26:12 UTC 2023 x86_64 GNU/Linux

Arguments:

TWS version = 1023
Program = TWS
Entry point = ibcalpha.ibc.IbcTws
--tws-path = /home/loading/Jts
--tws-settings-path = 
--ibc-path = /home/loading/ibc
--ibc-ini = /home/loading/ibc/joint_live.ini
--mode = 
--java-path = /usr/bin/
--user =
--pw =

=================================
Generating the classpath
Classpath=/home/loading/Jts/1023/jars/jackson-core-2.12.3.jar:/home/loading/Jts/1023/jars/jts4launch-1023.jar:/home/loading/Jts/1023/jars/jxbrowser-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-linux64-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-swing-7.29.jar:/home/loading/Jts/1023/jars/locales.jar:/home/loading/Jts/1023/jars/log4j-api-2.17.1.jar:/home/loading/Jts/1023/jars/log4j-core-2.17.1.jar:/home/loading/Jts/1023/jars/total-2020.jar:/home/loading/Jts/1023/jars/twslaunch-1023.jar:/home/loading/Jts/1023/jars/twslaunch-install4j-1.12.jar:/home/loading/Jts/1023/.install4j/i4jruntime.jar:/home/loading/ibc/IBC.jar

Generating the JAVA VM options
autorestart file not found

Java VM Options=-Xmx768m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70 -Dtwslaunch.autoupdate.serviceImpl=com.ib.tws.twslaunch.install4j.Install4jAutoUpdateService -Dchannel=latest -Dexe4j.isInstall4j=true -Dinstall4jType=standalone -DjtsConfigDir=/home/loading/Jts

Determining the location of java executable
Location of java executable=/usr/bin/

Renaming IB's TWS or Gateway start script to prevent restart without IBC

Starting TWS with this command:
"/usr/bin//java" -cp "/home/loading/Jts/1023/jars/jackson-core-2.12.3.jar:/home/loading/Jts/1023/jars/jts4launch-1023.jar:/home/loading/Jts/1023/jars/jxbrowser-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-linux64-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-swing-7.29.jar:/home/loading/Jts/1023/jars/locales.jar:/home/loading/Jts/1023/jars/log4j-api-2.17.1.jar:/home/loading/Jts/1023/jars/log4j-core-2.17.1.jar:/home/loading/Jts/1023/jars/total-2020.jar:/home/loading/Jts/1023/jars/twslaunch-1023.jar:/home/loading/Jts/1023/jars/twslaunch-install4j-1.12.jar:/home/loading/Jts/1023/.install4j/i4jruntime.jar:/home/loading/ibc/IBC.jar" -Xmx768m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70 -Dtwslaunch.autoupdate.serviceImpl=com.ib.tws.twslaunch.install4j.Install4jAutoUpdateService -Dchannel=latest -Dexe4j.isInstall4j=true -Dinstall4jType=standalone -DjtsConfigDir=/home/loading/Jts ibcalpha.ibc.IbcTws "/home/loading/ibc/joint_live.ini"  

IBC Settings:
    AcceptBidAskLastSizeDisplayUpdateNotification=
    AcceptIncomingConnectionAction=manual
    AcceptNonBrokerageAccountWarning=no
    AllowBlindTrading=yes
    AutoLogoffTime=
    AutoRestartTime=
    BindAddress=
    ClosedownAt=
    CommandPrompt=
    CommandServerPort=0
    ConfirmCryptoCurrencyOrders=transmit
    ControlFrom=
    DismissNSEComplianceNotice=yes
    DismissPasswordExpiryWarning=no
    ExistingSessionDetectedAction=manual
    ExitAfterSecondFactorAuthenticationTimeout=no
    FIX=no
    FIXLoginId=***
    FIXPassword=***
    IbDir=
    IbLoginId=***
    IbPassword=***
    LogStructureScope=known
    LogStructureWhen=never
    LoginDialogDisplayTimeout=180
    MinimizeMainWindow=no
    OverrideTwsApiPort=
    ReadOnlyApi=
    ReadOnlyLogin=no
    ReloginAfterSecondFactorAuthenticationTimeout=yes
    SaveTwsSettingsAt=
    SecondFactorAuthenticationExitInterval=300
    SecondFactorAuthenticationTimeout=600
    SecondFactorDevice=
    SendMarketDataInLotsForUSstocks=
    StoreSettingsOnServer=yes
    SuppressInfoMessages=yes
    TradingMode=live
End IBC Settings

2023-06-19 02:38:59:097 IBC: Version: 3.16.2
System Properties
------------------------------------------------------------
java.specification.version = 20
sun.jnu.encoding = UTF-8
channel = latest
java.class.path = /home/loading/Jts/1023/jars/jackson-core-2.12.3.jar:/home/loading/Jts/1023/jars/jts4launch-1023.jar:/home/loading/Jts/1023/jars/jxbrowser-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-linux64-7.29.jar:/home/loading/Jts/1023/jars/jxbrowser-swing-7.29.jar:/home/loading/Jts/1023/jars/locales.jar:/home/loading/Jts/1023/jars/log4j-api-2.17.1.jar:/home/loading/Jts/1023/jars/log4j-core-2.17.1.jar:/home/loading/Jts/1023/jars/total-2020.jar:/home/loading/Jts/1023/jars/twslaunch-1023.jar:/home/loading/Jts/1023/jars/twslaunch-install4j-1.12.jar:/home/loading/Jts/1023/.install4j/i4jruntime.jar:/home/loading/ibc/IBC.jar
java.vm.vendor = Oracle Corporation
sun.arch.data.model = 64
java.vendor.url = https://java.oracle.com/
user.timezone = America/New_York
java.vm.specification.version = 20
os.name = Linux
sun.java.launcher = SUN_STANDARD
user.country = US
sun.boot.library.path = /usr/lib/jvm/java-20-jdk/lib
sun.java.command = ibcalpha.ibc.IbcTws /home/loading/ibc/joint_live.ini
jdk.debug = release
sun.cpu.endian = little
user.home = /home/loading
user.language = en
java.specification.vendor = Oracle Corporation
java.version.date = 2023-03-21
java.home = /usr/lib/jvm/java-20-jdk
jtsConfigDir = /home/loading/Jts
file.separator = /
java.vm.compressedOopsMode = 32-bit
line.separator = 

java.vm.specification.vendor = Oracle Corporation
twslaunch.autoupdate.serviceImpl = com.ib.tws.twslaunch.install4j.Install4jAutoUpdateService
java.specification.name = Java Platform API Specification
install4jType = standalone
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
exe4j.isInstall4j = true
java.runtime.version = 20+36-2344
user.name = loading
stdout.encoding = UTF-8
path.separator = :
os.version = 6.3.5-2-MANJARO
java.runtime.name = Java(TM) SE Runtime Environment
file.encoding = UTF-8
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vendor.url.bug = https://bugreport.java.com/bugreport/
java.io.tmpdir = /tmp
java.version = 20
user.dir = /home/loading/Jts
os.arch = amd64
java.vm.specification.name = Java Virtual Machine Specification
native.encoding = UTF-8
java.library.path = /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
java.vm.info = mixed mode, sharing
stderr.encoding = UTF-8
java.vendor = Oracle Corporation
java.vm.version = 20+36-2344
sun.io.unicode.encoding = UnicodeLittle
java.class.version = 64.0
------------------------------------------------------------
2023-06-19 02:38:59:098 IBC: Using default settings provider: ini file is /home/loading/ibc/joint_live.ini
2023-06-19 02:38:59:098 IBC: Using default login manager: getting username and password from args but not found. Will get from settings
2023-06-19 02:38:59:099 IBC: Using default main window manager
2023-06-19 02:38:59:099 IBC: Using default trading mode manager: constructor parameter args but trading mode not present - will be taken from settings
2023-06-19 02:38:59:099 IBC: Using default config dialog manager
2023-06-19 02:38:59:101 IBC: CommandServer is not started because the port is not configured
2023-06-19 02:38:59:539 IBC: TWS Settings directory is: /home/loading/Jts
2023-06-19 02:38:59:541 IBC: Ensuring /home/loading/Jts/jts.ini contains required minimal lines
2023-06-19 02:38:59:541 IBC: Found setting: [Logon]/s3store=true
2023-06-19 02:38:59:541 IBC: Found setting: [Logon]/Locale=en
2023-06-19 02:38:59:541 IBC: Found setting: [Logon]/displayedproxymsg=1
2023-06-19 02:38:59:541 IBC: Found setting: [Logon]/UseSSL=true
2023-06-19 02:38:59:541 IBC: Found setting: [IBGateway]/ApiOnly=true
2023-06-19 02:38:59:541 IBC: Confirmed /home/loading/Jts/jts.ini contains required minimal lines
2023-06-19 02:38:59:541 IBC: Starting TWS
2023-06-19 02:38:59:541 IBC: Starting session: will exit if login dialog is not displayed within 180 seconds
java.lang.reflect.InaccessibleObjectException: Unable to make private static javax.swing.UIManager$LAFState javax.swing.UIManager.getLAFState() accessible: module java.desktop does not "opens javax.swing" to unnamed module @1a814726
    at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:387)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:363)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:311)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:201)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:195)
    at feature.search.recorder.JtsMultiLookAndFeel.a(JtsMultiLookAndFeel.java:107)
    at twslaunch.jclient.login.a.d(a.java:429)
    at twslaunch.jclient.login.l.a(l.java:444)
    at jclient.LoginFrame.main(LoginFrame.java:449)
    at ibcalpha.ibc.IbcTws.startTws(Unknown Source)
    at ibcalpha.ibc.IbcTws.startTwsOrGateway(Unknown Source)
    at ibcalpha.ibc.IbcTws.load(Unknown Source)
    at ibcalpha.ibc.IbcTws.main(Unknown Source)

maybe i did something wrong?

bsdice commented 1 year ago

You can't use JRE/JDK 20, because certain security changes are incompatible with TWS. There used to be a switch to turn it off, but that switch was disabled in 17. See https://openjdk.org/jeps/396.

Try Oracle JDK 10.0.2. That will only warn once but still work. Also the only JDK on Linux which supports 4K displays okayish and also the very last JDK which still has JavaFX bundled, which TWS needs. Or stay with "official" Oracle JRE/JDK 1.8.0.

rlktradewright commented 1 year ago

@thisIsLoading

Read the section on Java Runtime in the User Guide (quite near the beginning). This explains that you don't need to do anyting at all regarding getting the 'right' version of Java installed.

So I recommend that you use the 'private' JDK included in the TWS installation, as @bsdice suggested. Just remove your Java path setting and all should be well.

thisIsLoading commented 1 year ago

ah, that was it, thank you both, very much appreciated!

typical case of RTFM