Проблема, работающая .bat файл в Windows, должном “вводить строку, является слишком длинной”

C быстр, потому что это - в основном ряд макросов для ассемблера :) Существует не "позади сцены", когда Вы пишете программу в C. Вы память выделения, когда Вы решаете, что пора сделать, это и Вы освобождает тем же способом. Это - огромное преимущество, когда Вы пишете приложение реального времени, где predictabily важен (больше, чем что-либо еще, на самом деле).

кроме того, компиляторы C обычно чрезвычайно быстры, потому что сам язык прост. Это даже не делает проверок типа :) Это также означает, что это легче сделать трудно для нахождения ошибок. Преимущество рекламы с отсутствием проверки типа состоит в том, что имя функции может просто быть экспортировано с его именем, например, и это заставляет C кодировать легкий связаться с кодом другого языка

16
задан eldoctoro 1 October 2009 в 12:49
поделиться

9 ответов

If you are using Java 6, you can use a wildcard in the classpath, for example:

java -cp libs/* com.mypackage.MyProgram

See the documentation (scroll down to "Understanding class path wildcards") for more details.

Note: This doesn't work on older versions of Java.

10
ответ дан 30 November 2019 в 22:43
поделиться

You might be able to refactor by defining more drive letters, i.e. if you had W: to point at "z:\org\apache\maven\" that ought to cut out a few characters. Repeat that a couple of times, and you might get low enough for it to work.

2
ответ дан 30 November 2019 в 22:43
поделиться

Instead of the subst command you could try to create short symbolic links to all the directories where your JARs reside. Use the free junction tool from the Windows Sysinternals Suite to achieve this.

[...]

Using Junction

Use junction to list junctions:

Usage: [-s]

-s Recurse subdirectories

Examples:

To determine if a file is a junction, specify the file name:

junction c:\test

To list junctions beneath a directory, include the –s switch:

junction -s c:\

To create a junction c:\Program-Files for "c:\Program Files":

C:\>md Program-Files

C:\>junction c:\Program-Files "c:\Program Files"

To delete a junction, use the –d switch:

junction -d c:\Program-Files

1
ответ дан 30 November 2019 в 22:43
поделиться

Максимальный размер переменной среды составляет около 32760 символов. Однако максимальный размер одной командной строки в cmd (и, следовательно, в пакетных файлах) составляет 8190 символов.

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

В настоящее время я вижу два варианта:

  • Использовать VBScript вместо командного файла. Я предполагаю 1 , что он поддерживает более длинные строки. Также вы не обязаны записывать весь путь к классам в одной строке кода; это может быть просто строка.
  • Используйте setx , включенный в Windows Vista или новее, или в пакете ресурсов Windows до этого. setx позволяет вам читать из файла, но он также записывает непосредственно в реестр, так что по сути это эквивалентно установке пути к классам в среде вашего пользователя (а не только для одного процесса).

1 Я нигде не уверен, но он не наследует устаревшую кодовую базу cmd , поэтому это может быть разумным предположением.

2
ответ дан 30 November 2019 в 22:43
поделиться

Why are you hunting for the java class path? If you know where the class is, then just call that class by the direct path name, not its file name.

0
ответ дан 30 November 2019 в 22:43
поделиться

Я не совсем разбираюсь в особенностях Windows, но, учитывая, что у вас проблема с командной строкой, а не проблема с переменным размером, вы не можете определить переменные и использовать их? Например:

    
    set PLEXHOME=z:\org\codehaus\plexus\plexus-component-annotations\1.0-beta-3.0.5\plexus-component-annotations-1.0-beta-3.0.5.jar
    set CLASSPATH=%PLEXHOME%;%CLASSPATH%
    set WAGONHOME=z:\org\apache\maven\wagon\wagon-provider-api\1.0-beta-4\wagon-provider-api-1.0-beta-4.jar
    set CLASSPATH=%WAGONHOME%;%CLASSPATH%
    set MAVENAPIHOME=z:\org\apache\maven\maven-plugin-api\3.0-alpha-2\maven-plugin-api-3.0-alpha-2.jar
    set CLASSPATH=%MAVENAPIHOME%;%CLASSPATH%
    ...
1
ответ дан 30 November 2019 в 22:43
поделиться

Кому-нибудь из этих кувшинов важно, где они живут? Не могли бы вы просто скопировать их все из командного файла в каталог localjar, а затем просто перечислить их?

Вы можете использовать xcopy / d / y , который копирует, только если файл был изменен.

0
ответ дан 30 November 2019 в 22:43
поделиться

Another option if you are running vista and java 6 is to make a directory with symbolic links using the MKLINK command so that all the jars appear in one directory, and then use the java 6 ability to reference all of the jars with a *.jar.

I think the other answers pretty much exhaust the windows options, but another option is to make a wrapper jar that invokes the clojure.main and puts all of these jars in its classpath.

0
ответ дан 30 November 2019 в 22:43
поделиться

Проблема в первом наборе CLASSPATH = ....;% CLASSPATH% просто удалите% CLASSPATH% в конце. Ошибка не описательная, а потому, что% CLASSPATH% не имеет значения.

0
ответ дан 30 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

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