- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我参与了一个项目,该项目需要通过网络运行并且可以访问java的编译器工具和/或javacc api。我的团队正在考虑使用Java小程序使其基于Web。我想知道在这种情况下applet可以做什么和不能做什么都有某些限制。我假设由于对编译器的访问将在服务器上而不是在客户端的计算机上进行,因此这将不是问题。小程序是否允许我们按所述将两者分开?
最佳答案
如果applet为signed,则applet(甚至JavaFX applet)在这种情况下也可以工作。小程序存在许多细微的陷阱,因此在使用该技术之前,我建议您进行原型设计。按照JavaFX deployment guide查看如何部署基于JavaFX的applet。
我以为要编译Java,您需要安装完整的Java开发工具包(在applet部署情况下要确保这一点很麻烦)。但是,似乎编译API包含在标准Java运行时环境随附的javax.tools API中。因此,这很可能意味着您可以开发解决方案,包括基于客户端的Java代码部署和编译,而无需用户安装完整的Java Development Kit。
或者,您可能希望考虑可以在服务器上执行编译的客户端/服务器解决方案。 TopCoder Algorithm Competition Application是这种方法的一个示例(使用基于Java WebStart的解决方案)。这是运行该应用程序的jnlp文件(http://apps.topcoder.com/wiki/display/tc/The+Algorithm+Competition+Arena)。我建议您使用该应用程序在TopCoder中注册一个ID,然后尝试使用该ID编写和编译一些代码。 TopCoder实现使用普通的Swing,就像JavaFX存在之前编写的那样,但是如果愿意,您也可以将JavaFX用于实现。
如果您还需要一个将要编译的代码的编辑器(具有语法识别的文本样式),则可以使用JavaFX中嵌入的基于此类CodeMirror的编辑器。基于CodeMirror的解决方案将编辑器包装在基于html的WebView
控件中。对于JavaFX 8,您可能可以对syntax highlighting text editor使用新的TextFlow
控件,但是该API尚未成为受支持的公共发行版的一部分。
更新资料
我使用此答案中概述的策略来完成这项工作。
该图像是一个html页面,允许通过applet或Webstart应用程序访问客户端代码编辑器。图像的顶部是基于WebEngine的代码编辑区域,该WebEngine带有突出显示支持Java编辑的嵌入式语法CodeMirror JavaScript编辑器。图像的底部是在客户端计算机上本地编辑器中编译代码并随后运行它的输出。输出由任何编译错误,任何输出到sysout的程序以及任何输出到syserr的运行时异常组成。解决方案的棘手部分是:
研究如何捕获sysout和syserr并将它们重定向到JavaFX控件。
查找Java编译器。
缺省的Oracle Java Runtime Environment Provider仅提供Java编译器实现的通用接口,但本身不提供Java编译器实现-该实现仅包含在jdk附带的tools.jar中。因此,当我打包小程序时,我在小程序的包装中包含了tools.jar。我在获取服务提供者接口来获取javac编译器的实例时遇到了一些困难,因此最后,我仅使用以下行实例化了它:
JavaCompiler compiler = new com.sun.tools.javac.api.JavacTool();
warning: C:\Program Files\Java\jre8\lib\rt.jar(java/lang/Object.class): major version 52 is newer than 51, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
关于java - Java Applet允许Javac或其他jar访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15061757/
我的问题是关于基本的java命令之一“javac”。我的桌面上有一个“.java”文件。我已经安装了 JDK 7 并将路径变量添加到环境变量中。这是“环境变量”的屏幕截图。 http://s13.po
我制作了我的 gitrepository 并提交了它。 插入了一个 java 文件并想编译它,但它给了我这个: Bernard@BERNARD-PC /c/users/bernard/desktop/
运行Maven时,得到以下输出: [WARNING] Unable to autodetect 'javac' path, using 'javac' from the environment. 我该
我有一个导入一些 servlet 库的类。当我从命令行编译它时它很好。 当我使用 ant compile 任务编译它时,它给出了在其路径中找不到 servlet 库的错误。 这是已知/常见的情况吗?
我试图在 maven-compiler-plugin 中指定另一个版本的 JDK .当-target和 -source参数设置为1.5,一切正常。但是当我尝试使用 1.6 JDK 时,maven 会报
我们的软件之前附带 OpenJDK JRE,但现在我们将附带 Oracle JRE。 之前我们使用 OpenJDK javac 编译器进行编译。我认为现在我们应该使用 Oracle javac 编译器
在大多数现代 IDE 中,您可以设置一个参数来确保 javac 获得足够的堆内存来进行编译。由于不值得在这里讨论的原因,我们暂时与 JBuilder 2005/2006 联系在一起,而且源代码的数量似
我在桌面上的 Notepad++ 中保存了一个名为“first.java”的文件。当我运行 cmd 命令“javac first.java”时,它给了我这个错误。 javac: file not fo
更新: See resolution here. 感谢大家的帮助! 我在尝试使用 Ant 编译项目时遇到错误,它声称“[javac] javac:无效目标版本:7”并导致构建失败。 我在 Mac OS
当我尝试在我的 gwt-maven Projekt 上进行 maven-install 时,我得到了这个错误: [ERROR] Failed to execute goal org.apache.ma
使用 maven 编译时出现编译错误。 [ERROR] COMPILATION ERROR : [INFO] ---------------------------------------------
我正在查看一些内部 javac sun 编译器 API 源代码,并在 Types 类中发现了这一点: public Boolean visitTypeVar(TypeVar var1, Type va
我正在尝试运行 java 应用程序,但出现以下错误, Unable to find a javac compiler; com.sun.tools.javac.Main is not on the c
我有这个类,它是我在从 Java 6 移植到 Java 8 的项目中找到的一些代码的简化: public class Unification { final class Box {}
首先,我要感谢你,并明确地说,我已经在这个问题上苦苦思索了好几天,并在其他类似线程中寻找解决方案,但没有成功。 我们的应用程序负责生成 java 类,其中一些可能在类名(因此文件名)中包含特殊字符,例
以下代码创建了一个Collector,它产生了一个UnmodifiableSortedSet: package com.stackoverflow; import java.util.Collecti
当我用 Maven 编译我的类时遇到问题。堆栈跟踪如下所示: [ERROR] Failure executing javac, but could not parse the error: [ERRO
这个问题在这里已经有了答案: Why Java compiler as distributed as executable and not as JVM bytecode? (1 个回答) 关闭 7
我有一些用 javac 1.8.0_92 编译的代码: public final class Either { // ... private final L l; privat
这个问题在这里已经有了答案: Lombok's access to jdk.compiler's internal packages incompatible with Java-16 (3 个回答)
我是一名优秀的程序员,十分优秀!