在Ubuntu下安装Java运行环境和CS-Studio,并解决CS-Stuidio无法启动以及无法查看help文档的问题

在Ubuntu下安装Java运行环境

系统版本:Ubuntu19.04
安装时间:2020/04/26

step1 下载Java SE包

首先进入这个网址:https://www.oracle.com/java/technologies/,然后进入Java SE。
JavaSE
或者是直接选择Newest Download里面的最新版JavaSE
targz
在Java SE xx(数字)下选择JDK Download
homedownload
进入之后选择tar.gz的包下载,这种包不需要经过编译,更加方便
homedownload
下载之后一般~/home/Download文件夹下面

step2 解压

tiqu
然后将文件解压。直接右键提取到此处即可。得到一个文件夹jdk-14.0.1_linux-x64_bin
fitableversion
然后打开控制台将该解压出的文件夹移动到/usr/lib下面。(虽然是非必要的,但是usr文件夹下是存放安装的软件相关数据的,我比较习惯放到这里)
sudo mv jdk-14.0.1_linux-x64_bin /usr/lib

step3 生效

方式一:修改全局配置文件使其生效

打开 /etc/profile文件。
可以用vim/vi/nano/gedit什么都行,只要能编辑就行。不适应用命令行界面的可以用sudo gedit /etc/profile
然后在文件的末尾加上下面的内容

export JAVA_HOME=/usr/lib/jdk-14.0.1_linux-x64_bin/jdk-14.0.1 //注意这里要更往下一级
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=.:${JAVA_HOME}bin:$PATH

然后 source /etc/profile,然后重启即可

方式二:修改当前用户配置文件使其生效

打开 ~/.bashrc文件,在末尾加上上面同样的内容,然后执行 source ~/.bashrc即可。

step4 验证安装是否成功

打开控制台,输入java --version,如果打印出java的版本信息即可。
顺便检查一下java编译器 javac --version。
fitableversion

安装Control System Studio

Control System Studio这个东西资料真的不多,中文搜根本搜不到任何东西。
去这个地方http://controlsystemstudio.org/controlsystemstudio/current.html打开下载列表选择适合自己系统版本的CS Studio
structure
下载之后移动到自己想要的地方解压即可。4.5.9-linux.gtk.x86_64.tar.gz解压之后的文件夹结构如下.其中cs-studio是可执行文件。
startup1

启动CS Studio以及问题修复

启动css的时候
workspace
head
但是程序崩了,并且出现了报错信息:

An erro has occurred.see the log file xxx

去看了一下对应的log文件,一次出错的大致内容如下:

!SESSION 2020-04-27 19:26:13.632 -----------------------------------------------
eclipse.buildId=unknown
java.version=14.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-27 19:26:14.267
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterDatasource. The reference is: Reference[name = DataSourceProvider, interface = org.diirt.datasource.DataSourceProvider, policy = dynamic, cardinality = 0..n, target = null, bind = registerDatasource, unbind = deregisterDatasource]

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-27 19:26:14.269
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterFormulaFunctionSet. The reference is: Reference[name = FormulaFunctionSet, interface = org.diirt.datasource.formula.FormulaFunctionSet, policy = dynamic, cardinality = 0..n, target = null, bind = registerFormulaFunctionSet, unbind = deregisterFormulaFunctionSet]

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-27 19:26:14.270
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterService. The reference is: Reference[name = ServiceProvider, interface = org.diirt.service.ServiceProvider, policy = static, cardinality = 0..n, target = null, bind = registerService, unbind = null]

!ENTRY org.eclipse.core.resources 2 10035 2020-04-27 19:26:16.946
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.

!ENTRY org.eclipse.osgi 4 0 2020-04-27 19:26:17.101
!MESSAGE Application error
!STACK 1
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:490)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:504)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:203)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:632)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
	at org.csstudio.startup.application.Application.startApplication(Application.java:265)
	at org.csstudio.startup.application.Application.start(Application.java:119)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
	... 25 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.1.v20160712-0927
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:410)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 27 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2020-04-27 19:26:17.123
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
	at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:426)
	at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:154)
	at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:176)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:106)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:139)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156)
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
	at org.eclipse.osgi.container.Module.doStop(Module.java:634)
	at org.eclipse.osgi.container.Module.stop(Module.java:498)
	at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
	at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.1.v20160712-0927
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:410)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 21 more 

我们注意到,主要有下面三个地方的错误要留意:

  1. 首先开头这个地方中有一个eclipse.buildId = unknown

  2. 这个Message不能绑定引用

  3. 有一个类的定义找不到
    another

查到最有用的一个资料是这个,这个人遇到的问题与我极其相似,虽然他这是MacOS
https://github.com/ControlSystemStudio/cs-studio/issues/2561
这个回答如果看不太懂可以看下面这个人给出的链接
8u251
简单的说原因如下:Java版本不适合,需要使用java 1.8(也即Java 8),之前我们装的是Java 14.
在之前的下载页面下拉,可以看到一个Java SE 8xxxx,比我现在看到的是8u251

下载对应的JDK,下载之后解压,解压之后进入文件夹,然后还有两个zip文件需要解压。把这两个也解压了,然后按照之前的方式配置生效,把JAVA_HOME的路径修改称JAVA 1.8的路径即可。
csstudiostartup
再测试一下
cannotgoto
再启动cs studio就可以了
cannotgoto

CS Studio的尝试使用、遇到的问题以及解决

CS Studio这个东西究竟该怎么用?
进入CSS之后的welcome界面,first steps->introduciton to CS-Studio不知道为什么打不开
cangotogoogle
我一度怀疑是不是我的虚拟机下没有翻墙,所以显示不出来。于是我想办法让我的虚拟机翻出去之后再试,然而还是进不去

下面的probe和 BOY 点了之后一点反应都没有
tutorial点开之后什么内容都没有

找到一个CSS的使用的pdf:https://epics.anl.gov/docs/USPAS2014/1-Monday/CSS_2_First_Steps.pdf
但是这个东西好像有点老了,有些内容已经不适用了。比如这个

但是CS Studio菜单下根本就没有trend这个子菜单。而且下面的子菜单也没有包含Data Browser这个选项。
而且这个地方说可以查看help文档

但是我 help->help context一点反应都没有。只能通过windows → show view->help才能看到这个窗口

而且这里面的文档也是无法访问的

其他地方几乎搜不到任何关于如何使用CS-Studio的文章或者教程。在Control System Studio Guide Chapter1 introduction里面说到,使用者参考help文档即可(help->help context)但是我这个的help context一直打不开。
于是我又去看了下日志文件。大致内容如下:

!SESSION 2020-04-29 17:40:51.396 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_251
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-29 17:40:51.997
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterDatasource. The reference is: Reference[name = DataSourceProvider, interface = org.diirt.datasource.DataSourceProvider, policy = dynamic, cardinality = 0..n, target = null, bind = registerDatasource, unbind = deregisterDatasource]

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-29 17:40:52.000
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterFormulaFunctionSet. The reference is: Reference[name = FormulaFunctionSet, interface = org.diirt.datasource.formula.FormulaFunctionSet, policy = dynamic, cardinality = 0..n, target = null, bind = registerFormulaFunctionSet, unbind = deregisterFormulaFunctionSet]

!ENTRY org.eclipse.equinox.ds 1 0 2020-04-29 17:40:52.002
!MESSAGE Could not bind a reference of component org.csstudio.diirt.util.RegisterService. The reference is: Reference[name = ServiceProvider, interface = org.diirt.service.ServiceProvider, policy = static, cardinality = 0..n, target = null, bind = registerService, unbind = null]

!ENTRY org.eclipse.jface 4 0 2020-04-29 17:41:00.296
!MESSAGE /icons/welcome16.png
!STACK 0
java.io.FileNotFoundException: /icons/welcome16.png
	at org.eclipse.osgi.storage.url.bundleentry.Handler.findBundleEntry(Handler.java:37)
	at org.eclipse.osgi.storage.url.BundleResourceHandler.openConnection(BundleResourceHandler.java:169)
	at java.net.URL.openConnection(URL.java:1001)
	at org.eclipse.core.internal.boot.PlatformURLConnection.connect(PlatformURLConnection.java:112)
	at org.eclipse.core.internal.boot.PlatformURLConnection.getURLAsLocal(PlatformURLConnection.java:237)
	at org.eclipse.core.internal.runtime.PlatformURLConverter.toFileURL(PlatformURLConverter.java:34)
	at org.eclipse.core.runtime.FileLocator.toFileURL(FileLocator.java:207)
	at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:213)
	at org.eclipse.jface.resource.URLImageDescriptor.access$1(URLImageDescriptor.java:200)
	at org.eclipse.jface.resource.URLImageDescriptor$URLImageFileNameProvider.getImagePath(URLImageDescriptor.java:53)
	at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:407)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:775)
	at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:244)
	at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:164)
	at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:52)
	at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:86)
	at org.eclipse.jface.resource.LocalResourceManager.allocate(LocalResourceManager.java:69)
	at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:86)
	at org.eclipse.jface.resource.ResourceManager.createImage(ResourceManager.java:172)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.getImage(AbstractContributionItem.java:155)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.updateIcons(AbstractContributionItem.java:179)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.update(AbstractContributionItem.java:131)
	at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.fill(AbstractContributionItem.java:266)
	at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:728)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:810)
	at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:472)
	at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:465)
	at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:497)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:256)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5227)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1340)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1366)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1345)
	at org.eclipse.swt.widgets.Menu.gtk_show(Menu.java:711)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1949)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5492)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:9545)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1275)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2495)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4149)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
	at org.csstudio.startup.application.Application.startApplication(Application.java:265)
	at org.csstudio.startup.application.Application.start(Application.java:119)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1492)

!ENTRY org.eclipse.ui 4 0 2020-04-29 17:41:02.571
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NoClassDefFoundError: org/eclipse/equinox/http/jetty/JettyConfigurator
	at org.eclipse.help.internal.server.JettyHelpServer$StartServerThread.run(JettyHelpServer.java:79)
Caused by: java.lang.ClassNotFoundException: org.eclipse.equinox.http.jetty.JettyConfigurator cannot be found by org.eclipse.help.base_4.1.2.v20170301-0400
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 1 more

!ENTRY org.eclipse.equinox.p2.transport.ecf 2 0 2020-04-29 17:41:21.826
!MESSAGE Connection to https://ics-web.sns.ornl.gov/css/display.builde/p2.index failed on 拒绝连接 (Connection refused). Retry attempt 0 started
!STACK 0
java.net.ConnectException: 拒绝连接 (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ECFHttpClientSecureProtocolSocketFactory.performConnection(ECFHttpClientSecureProtocolSocketFactory.java:96)
	at org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ECFHttpClientSecureProtocolSocketFactory.connectSocket(ECFHttpClientSecureProtocolSocketFactory.java:77)
	at org.apache.http.conn.scheme.SchemeLayeredSocketFactoryAdaptor2.connectSocket(SchemeLayeredSocketFactoryAdaptor2.java:60)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.performConnect(HttpClientRetrieveFileTransfer.java:1084)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.access$0(HttpClientRetrieveFileTransfer.java:1075)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer$1.performFileTransfer(HttpClientRetrieveFileTransfer.java:1071)
	at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:74)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

发现还是存在以下的问题:

  1. eclipseId=unknown

  2. 还是有MESSAGE不能绑定引用

  3. 缺少一个png图标文件

  4. 有个类的定义找不到,这个我查了资料之后得知,要想能够看到help文档就要用到这个类

我找到资料说这个CS-Studio是基于Eclipse的,所以我在想是不是因为我没有装Eclipse所以缺少了库文件之类的,
我再去看了看下载的界面发现的确有说需要Eclipse Neon 4.6的

于是我在Ubuntu下安装了Eclipse Neon。但是仍然没有起作用。

找到的和我遇到的问题比较接近的是这个: https://epics.anl.gov/tech-talk/2017/msg00396.php
忘了最终是在哪搜到的解决方案,但是最终找到的有用的页面是这个https://controlssoftware.sns.ornl.gov/
这个他说这个SNS Control Software Tools才是适用于EPICS的
我选择的是第二个(点击More)。因为他说这个已经应用到了很多地方,所以我觉得这个应该更加稳定一些。

重新下载安装这个版本,然后help文档就可以用了。

虽然Welcome页面似乎还是不能用的样子。

log文件的内容大概是这样的。

!SESSION 2020-04-29 18:21:36.475 -----------------------------------------------
eclipse.buildId=SNS_CSS
java.version=1.8.0_251
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.equinox.p2.transport.ecf 2 0 2020-04-29 18:22:08.294
!MESSAGE Connection to http://ics-web.sns.ornl.gov/css/updates/p2.index failed on 拒绝连接 (Connection refused). Retry attempt 0 started
!STACK 0
java.net.ConnectException: 拒绝连接 (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ECFHttpClientProtocolSocketFactory.connectSocket(ECFHttpClientProtocolSocketFactory.java:86)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.performConnect(HttpClientRetrieveFileTransfer.java:1084)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer.access$0(HttpClientRetrieveFileTransfer.java:1075)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer$1.performFileTransfer(HttpClientRetrieveFileTransfer.java:1071)
	at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:74)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)

!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2020-04-29 18:23:11.678
!MESSAGE Unable to connect to repository http://ics-web.sns.ornl.gov/css/updates/content.xml
!STACK 0
java.net.ConnectException: 拒绝连接 (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:328)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientFileSystemBrowser.runRequest(HttpClientFileSystemBrowser.java:263)
	at org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser$DirectoryJob.run(AbstractFileSystemBrowser.java:69)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)

这次eclipseId=unknown终于没有再出现了。
但是另外出现的两个问题是连接到两个地址失败了。这两个网址猜测应该是和welcome页面相关的


我用浏览器试着打开这两个网址全部都是网页无法运作,无法处理请求。

最后回过头来看,之前找到的那个pdf教程还是适用的。


本文章使用limfx的vsocde插件快速发布