Bat-файл для создания ПУТИ К КЛАССУ Java

Похоже, это в основном сглаживание вложенных ключей. Это также кажется проблемой 4clojure .

Поиск сглаживания карты на github дает много результатов.

Один пример реализация:

(defn flatten-map 
  "Flattens the keys of a nested into a map of depth one but 
   with the keys turned into vectors (the paths into the original 
   nested map)."
  [s]
  (let [combine-map (fn [k s] (for [[x y] s] {[k x] y}))]
    (loop [result {}, coll s]
      (if (empty? coll)
        result
        (let [[i j] (first coll)]
          (recur (into result (combine-map i j)) (rest coll)))))))

Пример

(flatten-map {:OUT
              {:x 5
               :x/A 21
               :x/B 33
               :y/A 24}})
=> {[:OUT :x] 5, [:OUT :x/A] 21, [:OUT :x/B] 33, [:OUT :y/A] 24}

Еще более общая версия от Christoph Grand:

(defn flatten-map
  "Take a nested map (or a nested collection of key-value pairs) and returns a
   sequence of key-value pairs where keys are replaced by the result of calling
   (reduce f pk path) where path is the path to this key through the nested
   maps."
  ([f kvs] (flatten-map f nil kvs))
  ([f pk kvs]
   (mapcat (fn [[k v]]
             (if (map? v)
               (flatten-map f (f pk k) v)
               [[(f pk k) v]])) kvs)))

Пример:

(flatten-map conj [] {:OUT
              {:x 5
               :x/A 21
               :x/B 33
               :y/A 24}})
=> ([[:OUT :x] 5] [[:OUT :x/A] 21] [[:OUT :x/B] 33] [[:OUT :y/A] 24])

39
задан Binil Thomas 8 February 2009 в 02:36
поделиться

7 ответов

Вы хотите использовать для цикла в Сценарии пакетной обработки

 @echo off
 setLocal EnableDelayedExpansion
 set CLASSPATH="
 for /R ./lib %%a in (*.jar) do (
   set CLASSPATH=!CLASSPATH!;%%a
 )
 set CLASSPATH=!CLASSPATH!"
 echo !CLASSPATH!

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

Короткий сценарий пакетной обработки для удаления пустых каталогов

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

65
ответ дан n00begon 23 September 2019 в 17:14
поделиться

Почему был бы Вы использовать найти? По-видимому, Вы знаете все библиотеки Ваши потребности файла банки заранее, итак, почему не просто перечисляют их?

, С другой стороны, Вы могли всегда использовать -Djava.ext.dirs=lib и позволять ему взять все тот путь.

29
ответ дан Jon Skeet 23 September 2019 в 17:14
поделиться

С тех пор 6.0, Java поддерживает подстановочные пути к классам.

синтаксис пути к классу командной строки Java

18
ответ дан basszero 23 September 2019 в 17:14
поделиться

Походит , исполняемый JAR мог работать на Вас. Если Вы распределяете ZIP со всеми БАНКАМИ Ваши основные стандартные потребности, и Вы действительно выполняете его в командном процессоре, возможно, Вы могли создать исполняемый JAR с Основным Классом и Путем к классу, определенным в декларации. Все Ваши пользователи должны сделать, дважды щелкнуть по JAR и Вашему дяде Bob's.

4
ответ дан duffymo 23 September 2019 в 17:14
поделиться

То, что я делаю, когда я выпускаю БАНКИ командной строки для Windows/Linux, должно встроить все библиотеки JAR в моем JAR с помощью команды ANT:

       <fileset dir="${module.classes.dir}"/>
       <zipfileset src="${endorsed.lib.dir}/myLibrary.jar"/>

Таким образом библиотеки являются плавкой вместе с Вашими файлами класса.

Это не лучший способ двоичной возможности многократного использования, но если библиотеки не так тяжелы, Вам выполнили Ваше приложение путем простого вызова Java - банка myApp.jar в любой ОС.

0
ответ дан 23 September 2019 в 17:14
поделиться

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

См. здесь для получения информации о некоторых различиях между структурами и классами.

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

-121--1732732-

TortoitySVN (svn) имеет тесную интеграцию с explorer, и большинство устройств, которых я знаю, что запускают Windows и используют подрывную систему, также используют Tortoise.

-121--3808414-

Вариант, если вы хотите, чтобы параметр CLASSPATH находился вне сценария и вы не запускали оболочку с/V, вы можете сделать что-то подобное:

@echo off
FOR /R ./lib %%a in (*.jar) DO CALL :AddToPath %%a
ECHO %CLASSPATH%
GOTO :EOF

:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF

Полезно для настройки среды, когда вы только играете вокруг в командной строке.

5
ответ дан 27 November 2019 в 02:07
поделиться

Вы можете использовать немного другой способ, если вы используете Maven для сборки вашего проекта. Application Assembler Maven Plugin предназначен для создания программ запуска Java-приложений. Этот плагин генерирует для вас bat-файл launcher и помещает зависимости в указанную папку. Опционально launcher может зарегистрировать ваше приложение как сервис\demon.

Вот тема о его использовании

Этот плагин помогает сохранить CM части вашего проекта DRY.

0
ответ дан 27 November 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: