Member 12992094 Ответов: 1

Как я могу использовать JDK из ASP.NET MVC для компиляции и запуска java на удаленном сервере?


В настоящее время я получаю доступ к JDK, который находится на моей локальной машине. Я хочу иметь возможность использовать его удаленно(я хочу иметь JDK на сервере, чтобы все пользователи могли компилировать и запускать свои коды). Я подумываю о том, чтобы скопировать его с моей локальной машины в папку App_Data в проекте .Net, а затем щелкнуть правой кнопкой мыши и включить его в проект. Это верно?

Что я уже пробовал:

public ActionResult Compile(string dirPath)
       {
           Process p = new Process();
           p.StartInfo.FileName = "C:/Program Files/Java/jdk1.8.0_20/bin/javac.exe";
           p.StartInfo.UseShellExecute = false;
           p.StartInfo.Arguments = "E:/Atypon/TE4/src/FileServer/Upload.java";
           p.StartInfo.RedirectStandardInput = true;
           p.StartInfo.CreateNoWindow = true;
           p.StartInfo.RedirectStandardOutput = true;
           p.StartInfo.CreateNoWindow = true;
           p.StartInfo.RedirectStandardError = true;
           p.Start();
           string result=p.StandardError.ReadToEnd();
           p.WaitForExit();
           return View(result);
       }

Richard MacCutchan

Что происходит, когда вы пытаетесь это сделать?

Member 12992094

Он компилируется правильно, но путь к JDK является локальным, поэтому пользователи на других машинах не могут его использовать.

Richard MacCutchan

Почему вы думаете, что они могут?

Member 12992094

Я должен позволить им компилировать свои Java-программы без необходимости устанавливать JDK на свои локальные машины, это главный смысл веб-сайта. JDK-это большая папка, я не могу загрузить ее на сервер так же, как загружаю простой txt-файл. Поэтому я подумал о том, чтобы скопировать его в каталог проекта. Я просто не уверен, что это сработает.

Afzaal Ahmad Zeeshan

Затем просто позвольте им загрузить исходный ввод и скомпилировать его от своего имени. Таким образом, казнь будет проходить в режиме онлайн, и они получат ответ.

Не позволяйте пользователям напрямую взаимодействовать с двоичными файлами на вашем сервере. Совершенно нелогично и небезопасно разрешать кому — либо доступ к контенту — особенно к двоичным файлам, - поскольку это может подвергнуть ваше веб-приложение их воздействию, и тогда результаты полностью зависят от их намерений.

Member 12992094

Да, именно это я и хочу сделать. Они загрузят файлы, нажмут кнопку "скомпилировать" и получат результат.

Но мне нужен JDK на моем сервере, верно? Как я собираюсь загрузить JDK на сервер? поэтому я подумал: если я скопирую JDK, уже установленный на моем ноутбуке, в каталог проекта, а затем получу доступ к нему с помощью виртуального пути, будет ли он развернут вместе с проектом на удаленном сервере? (Лазурный в моем случае). Смогут ли пользователи компилировать свои коды удаленно?

Richard MacCutchan

Вам нужно следовать правильному пути и установить JDK где-нибудь на вашем сервере. Затем, когда веб-клиент загружает исходный файл, вы можете передать его компилятору в отдельном процессе, захватить выходные данные и отправить их обратно пользователю.

Member 12992094

Не могли бы вы подсказать мне, как это сделать? Я действительно Новичок в веб-разработке, и я не могу понять этого.

Richard MacCutchan

Ваш вопрос касается установки Java Development Kit, который представляет собой простую загрузку с веб-сайта Oracle на ваш сервер. Если у вас нет административного доступа к этому серверу, вам нужно поговорить с людьми, которые могут его предоставить.

Afzaal Ahmad Zeeshan

Пожалуйста, взгляните на мой ответ ниже.

1 Ответов

Рейтинг:
4

Afzaal Ahmad Zeeshan

Теперь, когда вы упомянули инструмент, который вы используете, позвольте мне лично провести вас через весь процесс. Дело в том, что на облачной платформе вы не можете ожидать запуска установщика, даже если они вам позволят, виртуальная машина в конечном итоге запустит и очистит временные папки — ваш контент всегда находится в виртуальной среде, даже если вы платите за физический сервер.

Итак, как получить Java JDK в Azure? Ну, это у тебя уже есть... :-)

Azure предоставляет вам все необходимые библиотеки для запуска приложения. Python, Java, Node.js, .NET framework, все они поддерживаются и предоставляются там, если вы копнете немного глубже в панели управления Azure — я говорю о панели управления Kudu, то вы сможете найти, что javac (Java Compiler) и Java JVM (java.exe) все это предоставляется Вам в самой машине. Например, пойдите сюда,

cd D:\Program Files\Java\jdk1.8.0_73\bin

Затем, если вы сделаете dir вы увидите список двоичных файлов. Они содержат все необходимое для компиляции Java-кода или запуска Java-кода для отображения выходных данных.

Вам потребуется получить доступ к информации о времени выполнения, такой как переменные среды, чтобы определить, где эти двоичные файлы предоставляются, а затем нацелить их из приложения.

Вашу панель управления можно легко найти по адресу, < ваше-веб-приложение-имя>. scm.azurewebsites.net Затем вы можете перейти к консоли отладки и бродить по своему сервису.

Для получения ресурсов, непосредственно связанных с разработкой Java в Azure, или доступных инструментов и служб, пожалуйста, ознакомьтесь с Центр разработчиков Java / Microsoft Azure[^] документация.


Member 12992094

Поэтому я должен сначала развернуть его в Azure, а затем завершить разработку на основе того, что предоставляет Azure?

Afzaal Ahmad Zeeshan

И да, и нет.

Да, потому что, конечно, вы должны сначала развернуть приложение в Azure.

Нет, потому что вы можете построить его так, как хотите. Однако вам просто нужно позаботиться о местах, где находятся двоичные файлы, чтобы вызвать их.

Member 12992094

Спасибо!