Java Tomcat 9 web套接字示例

Java Tomcat 9 web套接字示例,java,tomcat,java-websocket,Java,Tomcat,Java Websocket,我试图编译(javac)Tomcat示例,特别是 echo endpoint.javaexamples/WEB-INF/classes文件夹具有 类文件。我必须假设它是在 tomcat9的zip文件,因为我似乎无法编译它。不可能 查找包javax.websocket error: package javax.websocket does not exist 我可以在javaxwebsocket上找到各种各样的Oracle文档 软件包,但无法找到下载jar文件的位置 使用JDK1.8.0_161

我试图编译(javac)Tomcat示例,特别是
echo endpoint.java
examples
/WEB-INF/classes
文件夹具有 类文件。我必须假设它是在 tomcat9的zip文件,因为我似乎无法编译它。不可能 查找包javax.websocket

error: package javax.websocket does not exist
我可以在javaxwebsocket上找到各种各样的Oracle文档 软件包,但无法找到下载jar文件的位置 使用JDK1.8.0_161

我是一个老程序员,真的不喜欢所有这些工具 我想知道的是,他们试图为我做一些事情(eclipse,maven) 一切都在我的掌控之中 从命令行使用sublime3 my environment进行编辑 变量显示:

LLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Owner\AppData\Roaming CATALINA_BASE=D:\tomcat9\apache-tomcat-9.0.7
CATALINA_HOME=D:\tomcat9\apache-tomcat-9.0.7
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-NMIG0RS ComSpec=C:\WINDOWS\system32\cmd.exe
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default HOMEDRIVE=C:
HOMEPATH=\Users\Owner JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161
LOCALAPPDATA=C:\Users\Owner\AppData\Local
LOGONSERVER=\\DESKTOP-NMIG0RS NUMBER_OF_PROCESSORS=12
OneDrive=C:\Users\Owner\OneDrive OS=Windows_NT
Path=C:\ProgramData\Oracle\Java\javapath;C:\Program Files
(x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS
Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program
Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program
Files\PuTTY\;C:\Program Files (x86)\Skype\Phone\;C:\Program
Files\Java\jdk1.8.0_161\bin;C:\Program
Files\nodejs\;C:\Users\Owner\AppData\Local\Microsoft\WindowsApps;C:\Users\Owner\Downloads\java_ee_sdk-7u3-web\glassfish4\bin;C:\Program
Files\Microsoft VS
Code\bin;C:\Users\Owner\AppData\Roaming\npm;C:\Program Files\nodejs;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
我尝试将D:\tomcat9\apache-tomcat-9.0.7\lib添加到 javac命令认为它可能会获取tomcat-websocket.jar或 websocket-api.jar,但这也没有帮助。所以我有一个多部分 问题:

  • 在哪里可以获得所需的Jar文件
  • 为什么Oracle不在jdk下载中包含所有JAR?我觉得他们至少应该包含所有Javax JAR
  • 为什么apache不包含一个
    .bat
    文件来构建所有示例

  • 将目录添加到
    类路径
    只会添加可能在那里和子目录中找到的
    .class
    文件(具有特定的包结构)。如果要将
    websocket api.jar
    添加到
    类路径
    中,则必须按以下方式执行:

    C:> javac -cp D:\tomcat9\apache-tomcat-9.0.7\lib\websocket.jar myClass.java
    
    Eclipse和Maven等工具已经理解了这些依赖关系,如果您需要包含项目所依赖的20、30或100个不同的库,则可以取消所有需要进行的键入

    要直接回答您的问题:

  • 在哪里可以获得所需的JAR文件
  • 在这个特定的例子中,您正在寻找的是与Tomcat捆绑在一起的,但是您也可以。问题是Websocket API是JavaEEAPI的一部分,如果您不知道,您可能不知道您需要下载的是什么

  • 为什么Oracle不在JDK下载中包含所有JAR
  • 因为有大量的API,并不是每个人都需要它们。当你安装Microsoft的Visual Studio时,你想让它同时安装Visual COBAL++预处理器、Fortran编译器和Microsoft Bob模拟器吗?可能不想

  • 为什么apache不包含一个
    .bat
    文件来构建所有示例
  • 因为当真正有用的构建工具存在时,它非常不方便。Tomcat项目使用Apache Ant构建一切,包括
    示例
    web应用程序。使用Ant比从.bat文件构建要好得多。是的,它很复杂。这很复杂,因为构建Tomcat很复杂。构建e
    examples
    web应用程序不是这样,但是能够发出一个
    任务来理解依赖JAR文件的位置要比每次发生变化时必须重新滚动整个
    javac
    命令要好得多

    如果要方便地编译
    示例
    web应用程序,应下载Apache Ant并运行以下命令:

    C:> ant compile-webapp-examples
    
    如果您对web应用程序进行更改,您也会得到编译的更改


    值得指出的是,这并不是某些基于Java的阴谋的一部分,这些阴谋旨在迷惑“老程序员”在Java中,我在C和其他语言方面有很长的历史。任何超过一个源文件C项目的东西实际上都需要一个
    makefile
    ,我参与的许多项目在从源代码构建活动中也有很多其他步骤。比如运行编译器(lex/yacc等)在调用C编译器之前,等等。同样,大多数C编译器一次只编译一个文件。因此,如果你有100个源文件,你需要100行原始构建脚本。然后,你需要链接步骤,这实际上可能是许多步骤。如果你需要2个、30个或100个不同的依赖库,你需要从他们的r获取它们特定的源代码,然后在链接步骤中提及它们(C编译器不包括
    libssl
    libwhatever
    ,有时甚至不包括
    libc
    )JavaX包是JRE AFAIK的一部分,2。IDK,他们决定不使用3。查看2。考虑查看评论大小限制,只是节省了每个人处理我的SOAPBOX咆哮的“现代”。编程工具我想我会把它发布到其他地方,并在以后的评论中提供一个链接。@Lattialee通常用一个简单的“离开我的草坪”来表达观点。